目录

1. 什么是vue-cli?

2. 安装vue-cli 

3. 使用脚手架vue-cli(2.X版)来构建项目

4. npm install/npm install xxx -S/npm install xxx -D/npm install xxx -g的区别 

5. vue项目结构说明 

6. 下载相关基础项目模板 

7. 如何将下载好的模板导入Vue项目里面 

7.1 element-ui 

7.2 axios,qs,vue-axios

7.2.1 将src目录下创建api文件夹里面建两个js文件内容如下 


 1. 什么是vue-cli?

 vue-cli是vue.js的脚手架,用于自动生成vue.js+webpack的项目模板,创建命令如下:         
 vue init webpack xxx (项目名称)                   

2. 安装vue-cli 

npm install -g vue-cli 

 注1:安装成功后,会出现如下文件
        d:\tools
             node-v10.15.3-win-x64
               node_global
                 vue
                 vue.cmd 
                 vue-init
                 vue-init.cmd
                 vue-list
                 vue-list.cmd
   注2:安装完成之后打开命令窗口并输入 vue -V(注意这里是大写的“V”),如果出现相应的版本号,则说明安装成功。

 3. 使用脚手架vue-cli(2.X版)来构建项目

步骤一:使用脚手架创建项目骨架 

   cmd                                      #打开命令窗口
   d:                                       #切换到d盘
   cd d:\temp                               #进入d:\temp目录
   vue init webpack spa1                    #此命令用于创建SPA项目,它会在当前目录生成一个以“spa1”命名的文件夹
                                            #spa1即为项目名,项目名不能用中文或大写字母,然后终端会出现“一问一答”模式(见注2)  

  注1:cmd命令行窗口显示中文乱码,多是因为cmd命令行窗口字符编码不匹配导致
          修改cmd窗口字符编码为UTF-8,命令行中执行:chcp 65001
          切换回中文:chcp 936
          这两条命令只在当前窗口生效,重启后恢复之前的编码。 

注2:“一问一答”模式
         1.Project name:项目名,默认是输入时的那个名称spa1,直接回车 
         2.Project description:项目描述,直接回车
         3.Author:作者,随便填或直接回车
         4.Vue build:选择题,一般选第一个
         4.1Runtime + Compiler: recommended for most users//运行加编译,官方推荐,就选它了
           4.2Runtime-only: about 6KB lighter min+gzip, but templates (or any Vue-specific HTML) are ONLY allowed in .vue files 
              - render functions are required elsewhere//仅运行时,已经有推荐了就选择第一个了
         5.Install vue-router:是否需要vue-router,Y选择使用,这样生成好的项目就会有相关的路由配置文件
         6.Use ESLint to lint your code:是否用ESLint来限制你的代码错误和风格。N  新手就不用了,但实际项目中一般都会使用,这样多人开发也能达到一致的语法
         7.Set up unit tests:是否安装单元测试 N
         8.Setup e2e tests with Nightwatch?:是否安装e2e测试  N
         9.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     //选择题:选第一项“Yes, use NPM”是否使用npm install安装依赖

        全部选择好回车就进行了生成项目,出现如下内容表示项目创建完成
        # Project initialization finished!
        # ======================== 
        
        实在不会选,就回车选择“默认”或是选择“N”不安装  

## 步骤二:运行完上面的命令后,我们需要将当前路径改变到SPA这个文件夹内,然后安  装需要的模块
   ## 此步骤可理解成:maven的web项目创建成功后,修改pom文件添加依赖
   cd spa1                                  #改变路径到spa1文件夹下
   npm install                              #安装所有项目需要的npm模块

   ## 步骤三:启动并访问项目
   ## 此步骤可理解成:启动tomcat,并通过浏览器访问项目
   cd spa1 
   npm run dev 

   注1:项目启动成功后,打开浏览器输入“http://localhost:8080”即可
   注2:vue-cli构建的项目,在控制台npm run dev启动后,默认的调试地址是8080端口的但是大部分时候,
        我们都要并行几个项目开发,很有可能已经占用了8080端口,所以就涉及到如何去更改调试地址的端口号了
        config --> index.js  
        dev: {
          // Paths
          assetsSubDirectory: 'static',
          assetsPublicPath: '/',
          proxyTable: {},
          host: 'localhost', 
          port: 8083,       // 在这里修改端口号
          autoOpenBrowser: false,
          errorOverlay: true,
          notifyOnErrors: true,
        },

4. npm install/npm install xxx -S/npm install xxx -D/npm install xxx -g的区别 

  4.1 npm install
      下载“package.json”中dependencies和devdependencies中配置的所有依赖模块,并保存到项目的node_modules目录

      注1:在git clone项目的时候,项目文件中并没有node_modules文件夹,为什么呢?

  4.2 npm install xxx -g
      全局安装,下载依赖模块,并保存到%node_home%\node_global\node_modules目录下

  4.3 npm install xxx -S
      写入到package.json的dependencies对象,并保存到项目的node_modules目录
  4.4 npm install xxx -D
      写入到package.json的devDependencies对象,并保存到项目的node_modules目录
  注1:在git clone项目的时候,项目文件中并没有node_modules文件夹,为什么呢?
       我们知道这个文件中(project_home\node_modules)保存的是我们项目开发中所使用的依赖模块。这个文件夹可能有几百兆大小,
       如果放到github上,其它人clone的时候会非常慢,这个时候就想到用一个package.json依赖配置文件解决这个问题。
       这样每个人下载这个项目的时候,只需要进入该项目目录直接npm install npm就会到里面去找需要的函数库,也就是依赖。

  注2:缩写命令的全称,注意大小写、-S,-D都是大写
       i/install
       -S/--save
       -D/--save-dev 
       -g/--global


  注3:package.json文件里面的devDependencies和dependencies对象有什么区别呢?
       devDependencies里面的插件只用于开发环境,不用于生产环境,而dependencies是需要发布到生产环境的。
       例如:gulp ,babel,webpack一般都是辅助工具,应该使用--save-dev安装到开发环境
       例如:vue ,react,应该使用--save 安装到生产环境

 

5. 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中, 分别对应全局下载和局部下载的依赖包 

6. 下载相关基础项目模板 

 npm install element-ui -S

 npm install axios -S
 npm install qs -S  
 npm install vue-axios -S  

7. 如何将下载好的模板导入Vue项目里面 

7.1 element-ui 

在项目中src目录下找到main.js,并在指定位置添加三行代码(main.js是入口文件,所以在这里引入就行,其他页面就不用引入了)

import Vue from 'vue'
 
import ElementUI from 'element-ui' //新添加1
import 'element-ui/lib/theme-chalk/index.css' //新添加2,避免后期打包样式不同,要放在 
import App from './App';之前
      
import App from './App'
import router from './router'


Vue.use(ElementUI)   //新添加3
Vue.config.productionTip = false

 7.2 axios,qs,vue-axios

现在我做的是一个全局的配置......详情如下 

7.2.1 将src目录下创建api文件夹里面建两个js文件内容如下 

  •  action.js(路径根据你自己的路径写即可)
/**
 * 对后台请求的地址的封装,URL格式如下:
 * 模块名_实体名_操作
 */
export default {
	'SERVER': 'http://localhost:8080/ssm', //服务器
	'SYSTEM_USER_DOLOGIN': '/user/userLogin', //登陆
	'SYSTEM_USER_DOREG': '/login/reg', //注册
  'QueryChildNodeByPid':'/module/queryRootNode',//初始化菜单首页
  'QueryBookPager':'/book/queryBookPager',//书本分页查询书本方法
  'QueryBookExport':'/book/queryBookExport',//书本导出数据方法
  'QueryBookImport':'/book/queryBookImport',//书本导入数据方法
  'AddBook':'/book/addBook',//书本新增方法
  'DelBook':'/book/delBook',//书本删除方法
  'EditBook':'/book/editBook',//书本编辑方法
	'getFullPath': k => { //获得请求的完整地址,用于mockjs测试时使用
		return this.SERVER + this[k];
	}
}
  • http.js 
/**
 * vue项目对axios的全局配置
 */
import axios from 'axios'
import qs from 'qs'

//引入action模块,并添加至axios的类属性urls上
import action from '@/api/action'
axios.urls = action

// axios默认配置
axios.defaults.timeout = 10000; // 超时时间
// axios.defaults.baseURL = 'http://localhost:8080/j2ee15'; // 默认地址
axios.defaults.baseURL = action.SERVER;

//整理数据
// 只适用于 POST,PUT,PATCH,transformRequest` 允许在向服务器发送前,修改请求数据
axios.defaults.transformRequest = function(data) {
	data = qs.stringify(data);
	return data;
};


// 请求拦截器
/* axios.interceptors.request.use(function(config) {
	return config;
}, function(error) {
	return Promise.reject(error);
}); */

// 响应拦截器
/* axios.interceptors.response.use(function(response) {
	return response;
}, function(error) {
	return Promise.reject(error);
}); */

// // 路由请求拦截
// // http request 拦截器
// axios.interceptors.request.use(
// 	config => {
// 		//config.data = JSON.stringify(config.data);  
// 		//config.headers['Content-Type'] = 'application/json;charset=UTF-8';
// 		//config.headers['Token'] = 'abcxyz';
// 		//判断是否存在ticket,如果存在的话,则每个http header都加上ticket
// 		// if (cookie.get("token")) {
// 		// 	//用户每次操作,都将cookie设置成2小时
// 		// 	cookie.set("token", cookie.get("token"), 1 / 12)
// 		// 	cookie.set("name", cookie.get("name"), 1 / 12)
// 		// 	config.headers.token = cookie.get("token");
// 		// 	config.headers.name = cookie.get("name");
// 		// }
// 		return config;
// 	},
// 	error => {
// 		return Promise.reject(error.response);
// 	});

// // 路由响应拦截
// // http response 拦截器
// axios.interceptors.response.use(
// 	response => {
// 		if (response.data.resultCode == "404") {
// 			console.log("response.data.resultCode是404")
// 			// 返回 错误代码-1 清除ticket信息并跳转到登录页面
// 			//      cookie.del("ticket")
// 			//      window.location.href='http://login.com'
// 			return
// 		} else {
// 			return response;
// 		}
// 	},
// 	error => {
// 		return Promise.reject(error.response) // 返回接口返回的错误信息
// 	});



export default axios;
  • 修改main.js文件 
import axios from '@/api/http'             #vue项目对axios的全局配置      
import VueAxios from 'vue-axios' 
Vue.use(VueAxios,axios)

 

完结!写的很创促抱歉 

 

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐