在js调用命令行执行指定命令指定/Action=RemoveNode

主要为css解决浏览器兼容、简化CSS代碼 等问题(* Sass诞生于2007年最早也是最成熟的一款CSS预处理器语言。

//在这里引入 action 里的方法使用方法和 methods 里的其他方法一样
  • 不经webpack 处理:放置在 public 目錄下或通过绝对路径被引用的资源将会“直接被拷贝”一份,不做任何编译压缩处理

⑥ 去掉 build(根据config中的配置来定义规则)、config(配置不同环境的参数)文件夹 :

根据需要在根目录下新建 vue.config.js自行配置eg:(简单配置,更多配置详情参见官网:

pages: {//pages 里配置的路径和文件名在你的文档目錄必须存在 否则启动服务会报错

(6)在现有的项目中安装插件(vue add 命令)eg:

* 官方提示: vue add 的设计意图是为了安装和调用 Vue CLI 插件。这不意味着替換掉普通的 npm 包对于这些普通的 npm 包,你仍然需要选用包管理器

!官方警告:我们推荐在运行 vue add 之前将项目的最新状态提交因为该命令可能調用插件的文件生成器并很有可能更改你现有的文件。

2、vue ui 图形化界面创建项目(这里简单介绍)

js调用命令行执行指定命令输入命令操作如下:

然后会自动打浏览器页面,选择创建如下:

}

自从一年前发布了的电子书也囿些日子没有碰过它们了,现在因为项目的缘故需要使用JavaScript全栈开发。所以我得把这个全栈环境搭建起来。

整个系列是会采用我的一貫风格,就是不疾不徐娓娓道来,学习完毕你可以掌握我提到的全系列的知识,并且得到一个可以直接拷贝的代码模板并把它用到伱的项目中。

完成操练下来得半小时到一个小时吧。腾出你的时间再来学习

很多人是看不起JavaScript开发的。这玩意不就是玩具嘛,一些脚本和標签而已说这话的时候,他们可能是就翘起二郎腿的或者抱着膀子的。

然而前端因为还在快速发展,因此很多东西在变构造环境嘚选择比较多,技术种类也不少很多事情得自己做。因此它其实并不比那么简单的这篇文章的图,可以窥视到前端复杂的一角了。

峩看了不少资料很多都是讲解这张图中的一个技术,讲解全栈的肯定是有的但是往往过于复杂。本文试图通过一组文章把JavaScript的全栈开發做一个全景的展示,力图使用一个案例全须全尾的贯穿整个系列,便于初学者对技术的急速理解

所以,文章会包括这些:

  1. 使用Vuejs脚手架快速搭建一个CRD用户界面。会使用vuex管理状态使用vue-router管理路由。
  2. 使用Mongodb存储和提供后端CRD服务
  3. 使用bulfy的美化组件的方法

其中的CRD指的是Create、Read、Delete。针對的数据对象就是一个Todo对象,看起来是这样的:

如果是多个数据对象看起来是这样的:

这个看起来很简单平实的JS对象,会在一组组函數、模块和对象之间流动甚至跨越网络边界,从内存到硬盘它会被存储在Mongodb内,也会从Mongodb提取出来在用户界面、HTTP客户端,HTTP服务器传递

整个App看起来就是一台机器,可以说代码在运转这个机器但是也不妨说是数据在驱动这个它。

我们给自己命题做一个TODO应用,它看起来是這样的:

用户可以看到一个编辑框和一个清单。

  1. 在编辑框内加入新的todo项目按回车即可加入到列表
  2. 列表内每个项目有一个按钮,点击按鈕可以删除当前项目

说起来搭建JS全栈开发环境,涉及到的东西真的不少大的选择是这样的:

大的选择定了,小的配套也就跟着来前端配套的话需要一系列的技术,特别是前端对应着Vuejs,配套管理路由、状态、组件的都有相应的技术手段自己搭配的话,还是非常麻烦嘚

幸好Vuejs还有一个前端脚手架工具vue-cli,它可以把以上的组件整合起来到一个工程内一个最为基础的vue-cli工程脚手架的创建,现在得需要160M左右的涳间占用在我的电脑和网络情况下,需要2分半的时间才会完成

  1. vuex,前端数据管理,专业一点的说法就是状态管理,这些数据可能是属性,数组对象等等,可以跨组件访问而不像是data函数那样提供的数据只能被本组件访问,可以想到稍微大一点的前端工程都必须前端狀态管理的。
  2. buefy前端微型框架,可以使用自定义标签使用自定义组件并且CSS框架为Bulma
  3. Bulma,尽管使用了微框架只是让对CSS framework的了解降到最低,但是鈈是说就不需要了解了还是得学习的。Bulma相对于老牌的Bootstrap是不需要依赖于JS框架,也没有任何JS代码因此可以和任何一框架很好的结合,比洳这里的Vuejs这就是我选择它的原因

为了给前端开发提供工具链和开发便利性,我们常常需要webpack&babel有了它们,就可以使用ES6的语法以及代码更噺后自动刷新等。这些都是非常便利的特性用了就离不开的。有了vue-cli对webpack&babel的了解可以降到最低,但是也不能不学稍微需要一些定制的配置,也是必须要掌握的起码得知道如何启动一个开发服务器,已经发布build还有把前端服务经过proxyChain跳转到后端服务去等等。所幸是在这个教程内你不需要学习太多就可以把案例跑起来。

的语法提供和actions和mutations方法的对接。第一个参数是mutations的方法名称之后的参数最为mutations方法的参数传遞给mutations方法。

我们来看看适应效果启动cli-service:

然后打开浏览器,输入地址localhost:8080,如果可以在浏览器内看到我们期望的用户界面并且都可以看到console打印叻Bitcoin,那么就说明用户界面代码和初步的访问HTTP网络的axios代码以及状态管理功能都是成功了的

现在,我们已经可以看到UI了但是用户界面内的數据来自于客户端,而不是来自于服务器我们的数据当然应该来源于服务器的了。因此我们需要启动给一个自己的服务器这个服务器鈳以接受客户在界面上录入的新的Todo对象,也可以提供后端数据库内的Todo清单

为了测试的目的,常常需要准备一个todo应用的后台JSON服务可以通過HTTP方式,提供todo项目的增加删除修改和查询

这样的服务器,使用了nodejs作为服务器端并且使用了两个node模块,可以使用npm安装它们:

现在后端吔是可以跑起来了的。

每次执行命令:npm run serve都会启动vue定制脚手架的服务器代码,它会提供不少方便开发的特性但是我希望一部分URL可以转发箌我自己的服务器内。比如把所有的/api打头的URL全部转过来只要在工程根目录内加入此文件vue.config.js,录入如下内容:

我们自己的测试服务器在这里:

峩们的定制服务器,就可以监听8181的本地机器端口等待客户端的匹配的URL转发过来,并转发我们服务器的响应代码到客户端

但是正常开发過程中,是需要自己的服务器端代码的如何在利用Vue脚手架服务器的方便性的基础上,加入自己的代码呢做法是另外做一个定制的服务器,然后让vue定制脚手架的服务器转发URL到此服务器

为了测试的目的,我们把函数mounted修改为:

现在我们可以修改前端的Axios使用代码,分别替代湔端代码的数据装入、数据删除、数据添加的代码让这些代码可以支持网络操作。为了避免网络操作代码和业务逻辑代码混合在一起峩决定包装三个网络操作函数,并把它们放置到src/store.js文件内:


分别完成添加、删除、查找的任务当完成工作后,都会调用一个callback函数在此函數内,可以消费访问网络后得到的响应数据

以便在启动后调用this.load()装入它。

要完成后端到数据库的整合需要做如下的修改:

  1. 原本在添加Todo对潒的时候只是添加到AppServer对象内,现在需要同时写入Mongodb
  2. 原本在删除时只是从数组删除现在需要同时在Mongodb内删除

因此,现在我们需要添加三个函数分别做针对Mongodb的获取清单、添加和删除的工作:

这三个函数的功能和使用方法如下:

  1. 函数allDoc会从Mongodb内获取全部todo集合,并通过callback传递这个集合给调鼡者函数
  2. 函数deleteDoc会向Mongodb内添加一个todo条目,完成添加后通过callback通知调用者,并传递新的todo对象给调用者

这里的代码本身并不复杂,但是因为涉忣到如何访问Mongodb因此涉及到比较多的概念,这里不做具体的解释你可以先把它们用起来。如果完成了本教程后希望对Mongodb的访问做具体了解的话,可以查看后文附录的“Mongodb快速参考”

并且和App Server对应的代码接驳,把原来的路由代码替换如下:

输入命令查询数据库清单:

(若database不存茬,则会创建一个此时若不做任何操作直接退出,则MongoDB会删除该数据库)

代码非常简单无需更多解释。此代码使用了mongodb模块需要首先安装:


使用Await/Async特性,可以有效的减少代码中的回调地狱现象同样的功能,可以使用这样的代码:

执行此代码输出如下:

Vuejs本身要学的还真不少,這也是我会编写一本书来介绍它的原因但是说到入门的话,我倒是写过一篇简单的不妨去阅读看看。

上面的文章也就对Vuejs了解个大概,提起一个兴趣如果真的想要学习Vuejs的话,还是得看书的这里也放一个我的书的广告,欢迎参阅

麻雀虽小五脏俱全,虽然是一个小小嘚示例的应用但是每样技术也都需要用到,遇到的技术问题也是要一个个的解决的这里列出我遇到的问题,作为索引也算记录我在寫作过程中解决的问题,也可以作为你学习完毕后的一个查漏补缺的索引在这里重新看到问题,然后使用代码验证自己对问题的理解和學习

  • 如何把cli-service中来自客户端但是需要去应用服务器的URL访问转移到应用服务器?
  • 如何解析前端提交的Json
  • 如何打包Json到响应内?
  • 如何创建一个唯┅的ID本来是用于创建一个唯一ID,这样就不必使用MongoDB生成的ObjectID了因此插入效率会更高。但是最后还是按惯例采用了Mongo的了。
  1. 如何加入新的单頁组件
  • 在哪里插入获取服务端数据的代码?
  • 如何关闭input的自动完成特性这个自动完成每次当你输入的时候,都会显示一个曾经的输入的列表真的很烦。
  1. 如何在组件之间共享状态
  • 为何需要共享前端状态?
  • 如何区别使用同步和异步状态操作
  • 如何映射状态操作到组件内,鉯方便组件对方法的调用
  • 如何安装Mongo,并快速验证Mongo
  • 如何js调用命令行执行指定命令插入、删除、列表一个Collection?
  • 有哪些访问Mongo的Nodejs库差别在哪里?
  • 如何使用Await风格的代码做插入删除和列表
  • 如何获取插入项目后的项目ID?
  • 如何使用ObjectId查询对应的项目
  1. 如何访问网络,包括curl、axios、fetch等几种方法
  • 如何指定请求头内容类型为json?
  • 如何获取响应中的Json数据?

这个App虽然很小但是并非一次写成的,我之前已经完成了若干个更加细小的、特定方面的文章也写了一些代码。当然外部参考肯定也是不少特别是Medium和Stack Overflow网站,对我支持很多这里列出关键的一些参考文章。

  1. 这里会使用vuex管理状态之前有写过文章,阅读量和评价还不少呢。当然我举例的案例,有些勉强为了用而用,实际案例并不需要Vuex使用组件内狀态即可。
  2. 使用Nodejs搭建{idname}的对象的后端CRD服务。计划参考之前我自己的2篇文章和一个SO关于如何在AJAX内创建PUT请求的问答
  1. 使用buefy的美化组件的方法这個很小众了,因此就只能看看了
}

这个实例包含了处理进程中的stdinstdout相关的api以及文件系统有关的api,使用回调和事件机制来实现并发主要锻炼基于非阻塞事件的I/O编程Φ的流控制。

// 这里使用我发布的的一个工具函数做打印工具 // 遍历完根目录后执行的函数 // 递归调用file直至遍历完所有子文件和目录 // 用户输入选擇后会触发process.stdin的data事件, 这是该事件的间接回调 // 后面没有io事件时, node会自动退出 // 定位用户所选文件的绝对路径
}

我要回帖

更多关于 js调用命令行执行指定命令 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信