前端nodejs+vue+elemetUI的安装配置
一、Node.js的环境搭建
1.nodejs介绍
- Node.js是一个基于Chrome V8引擎的[JavaScript运行环境]。 Node.js使用了一个事件驱动、非阻塞式I/O 的模型。
- Node.js是一个让JavaScript运行在服务端的开发平台,它让JavaScript成为与PHP、Python、Perl、Ruby等服务端语言平起平坐的脚本语言。nodejs让javascript不再局限于放在html的嵌入式脚本,同时可以作为服务端开发的语言。
- nodejs是JavaScript运行时环境,JEE是java的运行时环境。
- javascript和java除了在名称上优点类型,没有半毛钱关系。
2.npm是什么?
- 简单的说,npm就是nodejs的包管理工具,是nodejs package manager的简称。
- 通俗的讲述npm的作用:
为啥我们需要一个包管理工具呢?因为我们在Node.js上开发时,会用到很多别人写的JavaScript代码。如果我们需要使用别人写的某个包,每次都根据名称搜索一下官方网站,下载代码,解压,再使用,非常繁琐。 于是一个集中管理的工具应运而生:大家都把自己开发的模块打包后放到npm官网上,如果要使用,直接通过npm安装就可以直接用,不用管代码存在哪,应该从哪下载。
更重要的是,如果我们要使用模块A,而模块A又依赖于模块B,模块B又依赖于模块X和模块Y,npm可以根据依赖关系,把所有依赖的包都下载下来并管理起来。否则,靠我们自己手动管理,肯定既麻烦又容易出错。- npm作用很类似与maven的作用。
3.环境搭建与安装
3.1 下载
node.js下载地址.
根据上图自行选择对应的版本下载。
- LTS意为长期维护版,特点是稳定,但有些最新的特性可能没有,建议下载时选择这种版本。
- Current是新特性版本,优点是拥有最新的特性,但可能不稳定,对应一般开发人员,或产品级的项目不建议使用。
注:msi为安装版本,为更好的了解nodejs的配置请下载zip进行手动配置。同时这里使用的是zip安装
3.2 解压
将文件解压到指定位置(例如:C:\Program Files),
并在解压后的目录下建立node_global和node_cache这两个目录
目录 | 说明 |
---|---|
node_global | npm全局安装位置 |
node_cache | npm缓存路径 |
3.3 环境变量配置
环境变量 | 配置示例 |
---|---|
新增NODE_HOME | C:\Program Files\node-v10.16.3-win-x64 |
修改PATH | 在最后添加:;%NODE_HOME%;%NODE_HOME%\node_global; |
注意:对于path变量是修改,而不能将以前的变量清除
如果path环境变量配置是以表格显示,
则直接在最后添加上 %NODE_HOME% 和 %NODE_HOME%\node_global
配置完成后,可以在dos命令窗口通过以下命令查看配置:
- echo %node_home%
- echo %path%
测试安装是否成功:打开cmd窗口,输入如下命令会输出Node.js和npm的版本号
- node -v
- npm -v
3.4 配置npm全局模块路径和cache默认安装位置
打开cmd,分别执行如下命令:
npm config set cache "C:\Program Files\node-v10.16.3-win-x64\node_cache"
npm config set prefix "C:\Program Files\node-v10.16.3-win-x64\node_global"
1:将步骤3.2创建的node_global(npm全局安装位置)和node_cache(npm缓存路径)与npm联系起来
2:如果执行命令卡死,可以删除C:\Users\用户名.npmrc 后重新执行。(用户名:为当前电脑的用户名)
3:“D:\tools\node-v10.15.3-win-x64\node_global”,双引号不能少
4:node_global全局安装位置类似于Maven中的本地Jar包仓库
3.5 修改npm镜像提高下载速度
原理和maven配置国内仓库是一样的,npm默认的仓库为https://registry.npmjs.org/。可以将仓库配置为国内的以提高速度。
- registry,配置为淘宝源 (推荐使用这种方法)
#设置淘宝源
npm config set registry https://registry.npm.taobao.org/
#查看源,可以看到设置过的所有的源
npm config get registry
- 其实此步骤的内容就是将以下代码registry=https://registry.npm.taobao.org添加到C:\Users\用户名.npmrc文件中
- 如果要恢复成原来的设置,执行如下:
npm config set registry https://registry.npmjs.org/
- cnpm (只需要了解就好了)
npm install -g cnpm --registry=https://registry.npm.taobao.org
3.6 配置验证
进入dos命令窗口进行测试
说明 | 操作 |
---|---|
版本验证 | node -v npm -v |
查看镜像设置情况 | npm get registry |
查看npm全局路径设置情况
此步骤随便全局安装一个模块就可以测评
npm install webpack -g
以上命令执行完毕后,会生成如下文件,检查文件是否生成:
%node_home%\node_global\node_modules\webpack
3.4 ~ 3.5 命令执行完毕后,检查是否生成如下文件
3.7 运行nodejs项目(忽略此步骤)
进入dos命令行,进入项目目录下
- npm install 命令。 install命令做什么?
进行依赖安装,命令执行完后,你会发现,项目的根目录下多了一个node_modules文件夹,那里面就是从npm远程库里下载的模块,然后“安装”到你的项目中,此步骤,可理解成修改maven的pom文件添加依赖,然后maven再从中央仓库下载依赖。项目中的package.json就相当于maven的pom.xml文件的作用。
注:依赖的包比较大时,node_modules目录的下载需要有比较好的网络。
- 启动项目npm run dev
在dos命令窗口进入到项目的目录中运行npm run dev
二、Vue项目创建
1.安装前提
在安装vue-cli前需要先确定nodejs环境安装好,验证nodejs环境安装:
- node -v
- npm -v
2.安装vue-cli
- vue-cli是vue.js的脚手架,用于自动生成vue.js+webpack的项目模板 (全局安装只需要安装一次即可)
命令如下:
npm install -g vue-cli
安装成功后会在配置的node_global\node_modules目录下会看到vue-cli目录。
- 进入dos命令窗口输入如下命令,验证vue安装是否成功,注意:这里的V是大写。如果成功会打印版本号。
vue -V
3.使用vue-cli构建项目
- 在cmd命令窗口,到项目存放目录,运行如下命令:
vue init webpack projectName
projectName为项目名称,根据实现输入即可。
注:cmd命令行窗口显示中文乱码,多是因为cmd命令行窗口字符编码不匹配导致, 修改cmd窗口字符编码为UTF-8,命令行中执行:chcp 65001, 切换回中文:chcp 936, 这两条命令只在当前窗口生效,重启后恢复之前的编码。不用管。
- 接下来,安装程序会进入一问一答的安装模式:
- Project name:项目名,默认是输入时的那个名称spa1,直接回车
- Project description:项目描述,直接回车
- Author:作者,随便填或直接回车
- Vue build:选择题,一般选第一个
- Runtime + Compiler: recommended for most users //运行加编译,官方推荐
- Runtime-only: about 6KB lighter min+gzip, but templates (or any Vue-specific HTML) are ONLY allowed in .vue files - render functions are required elsewhere//仅运行时
- Install vue-router:是否需要vue-router,Y选择使用,这样生成好的项目就会有相关的路由配置文件
- Use ESLint to lint your code:是否用ESLint来限制你的代码错误和风格。N
- Set up unit tests:设置单元测试 N
- Setup e2e tests with Nightwatch?:是否安装e2e测试 N
- Should we run npm install for you after the project has been created? (recommended) (Use arrow keys)
Yes, use NPM (选择该项即可)
Yes, use Yarn
No, I will handle that myself
全部选择好回车就行了,会生成项目,出现如下内容表示项目创建完成
#Project initialization finished!
#========================
4.创建项目可能会出现的问题
- 在有异常的安装过程中完成安装,如下图:
可能会是dos的权限不够
↑↑↑以管理员的身份运行dos,再次创建vue项目
- 在创建过程中一直卡在downloading template的位置 不停的加载,如下图:
出现这种情况一般可能是网络问题 或者 防火墙的问题
↑↑↑可以重连网络 或者 设置允许程序访问网络
5.安装需要的模块与端口号修改
此步骤类似于maven通过pom文件安装依赖。
命令:
npm install
需要些流量,请使用速度较好的网络。
安装完成后,在命令窗口,到项目目录,运行如下命令启动项目:
npm run dev
运行项目, 出现:Your application is running here: http://localhost:8080,表示运行成功,在浏览器地址栏输入http://localhost:8080即可查看。
项目运行时默认使用的是8080端口,如果其他程序也使用该端口则会引发冲突,如果tomcat默认使用的也是8080,为避免冲突需要改变端口号。
打开项目目录下config/index.js文件,修改dev部分的port即可。
三、Element-ui模块
添加element-ui时先停掉服务,使用如下命令安装element-ui模块。
npm install element-ui -S
使用vue+elementUI创建SPA项目,一般情况下其项目结构组成如下:
- Vue + ESLint + webpack + elementUI + ES6
Vue: 主要框架:
- ESLint: 帮助我们检查Javascript编程时的语法错误,这样在一个项目中多人开发,能达到一致的语法
- Webpack: 是一个现代 JavaScript 应用程序的静态模块打包器(module bundler)。整个项目中核心配置
- elementUI: 是基于vue的一套样式框架,里面有很多封装好的组件样式
- ES6: 全称ECMAScript6.0,是JavaScript的下一个版本标准,2015.06发版
四、Vue知识点
1.package.json
每个项目的根目录下面,一般都有一个package.json文件,定义了这个项目所需要的各种模块,以及项目的配置信息(比如名称、版本、许可证等元数据)。npm install命令根据这个配置文件,自动下载所需的模块,也就是配置项目所需的运行和开发环境。
2.install命令中的-g, -S, -D参数
命令 | 含义 |
---|---|
npm install | 下载“package.json”中dependencies和devdependencies中配置的所有依赖模块,并保存到项目的node_modules目录 |
npm install xxx -g | 全局安装,下载依赖模块,并保存到%node_home%\node_global\node_modules目录下 |
npm install xxx -S | 写入到package.json的dependencies对象,并保存到项目的node_modules目录 |
npm install xxx -D | 写入到package.json的devDependencies对象,并保存到项目的node_modules目录 |
注: 在git clone项目的时候,项目文件中并没有node_modules文件夹,为什么呢?
我们知道这个文件中(project_home\node_modules)保存的是我们项目开发中所使用的依赖模块。这个文件夹可能有几百兆大小,如果放到github上,其它人clone的时候会非常慢,这个时候就想到用一个package.json依赖配置文件解决这个问题。这样每个人下载这个项目的时候,只需要进入该项目目录直接npm install npm就会到里面去找需要的函数库,也就是依赖。
缩写命令的全称,注意大小写,-S,-D都是大写
命令 | 简称 |
---|---|
install | i |
–save | -S |
–save-dev | -D |
–global | -g |
3.vue项目结构说明
文件夹/文件 | 文件夹中的包含文件 | 说明 |
---|---|---|
build文件夹 | 这个文件夹主要是进行webpack的一些配置 | |
webpack.base.conf.js | webpack基础配置,开发环境,生产环境都依赖 | |
webpack.dev.conf.js | webpack开发环境配置 | |
webpack.prod.conf.js | webpack生产环境配置 | |
build.js | 生产环境构建脚本 | |
vue-loader.conf.js | 此文件是处理.vue文件的配置文件 | |
config文件夹 | 配置文件 | |
dev.env.js | 配置开发环境 | |
prod.env.js | 配置生产环境 | |
index.js | 这个文件进行配置代理服务器,例如:端口号的修改 | |
node_modules文件夹 | 存放npm install时根据package.json配置生成的npm安装包的文件夹 | |
src文件夹 | 源码目录(开发中用得最多的文件夹) | |
assets | 共用的样式、图片 | |
components | 业务代码存放的地方,里面分成一个个组件存放,一个页面是一个组件,一个页面里面还会包着很多组件 | |
router | 设置路由 | |
App.vue | vue文件入口界面 | |
main.js | 对应App.vue创建vue实例,也是入口文件,对应webpack.base.config.js里的入口配置 | |
static文件夹 | 存放的文件不会经过webpack处理,可以直接引用,例如swf文件如果要引用可以在webpack配置,对swf后缀名的文件处理的loader,也可以直接将swf文件放在这个文件夹引用 | |
package.json | 这个文件有两部分是有用的:scripts 里面设置命令以及在dependencies和devDependencies中,分别对应全局下载和局部下载的依赖包 |
五、其他拓展安装
1.axios
axios是vue2提倡使用的轻量版的ajax。它是基于promise的HTTP库。它会从浏览器中创建XMLHttpRequests,与Vue配合使用非常好。
vue.js有著名的全家桶系列:vue-router,vuex, vue-resource,再加上构建工具vue-cli,就是一个完整的vue项目的核心构成。其中vue-resource是Vue.js的一款插件,它可以通过XMLHttpRequest或JSONP发起请求并处理响应,但在vue更新到2.0之后,作者就宣告不再对vue-resource更新,而是推荐的axios
安装命令:
npm install axios -S
2.qs
qs.js它是一个url参数转化的js库。用法就两个:
var obj = qs.parse(‘a=b&c=d’); //将URL解析成对象的形式:{a:‘b’,c:‘d’}
var str = qs.stringify(obj); //将对象 序列化成URL的形式,以&进行拼接:a=b&c=d’
安装命令:
npm install qs -S
3.vue-axios
vue-axios是在axios基础上扩展的插件,在Vue.prototype原型上扩展了$http等属性,可以更加方便的使用axios
安装命令:
npm install vue-axios -S
4.mockjs
Mock.js是一个模拟数据的生成器,用来帮助前端调试开发、进行前后端的原型分离以及用来提高自动化测试效率。众所周知Mock.js因为两个重要的特性风靡前端:
安装命令:
npm install mockjs -D
5.vuex
Vuex是专门为vue应用程序开发的状态管理模式,将组件的共享状态抽取出来,以一个全局单例模式进行管理,组件树构成一个巨大的视图,不管组件在树的何种位置,任何组件都能获取到状态和触发行为。可以将其想象为一个“前端数据库”(数据仓库),让其在各个页面上实现数据的共享包括状态,并且可操作。(核心就是 解决组件间的通讯问题)
Vuex分成五个部分:
1.State:单一状态树
2.Getters:状态获取
3.Mutations:触发同步事件
4.Actions:提交mutation,可以包含异步操作
5.Module:将vuex进行分模块
安装命令:
npm install vuex -S
6.vuex状态持久化
Vuex 解决了多视图之间的数据共享问题。但是运用过程中又带来了一个新的问题是,Vuex 的状态存储并不能持久化。也就是说当你存储在 Vuex 中的 store 里的数据,只要一刷新页面,数据就丢失了。
引入vuex-persist 插件,它就是为 Vuex 持久化存储而生的一个插件。不需要你手动存取 storage ,而是直接将状态保存至 cookie 或者 localStorage 中。
安装命令:
npm install vuex-persist -S