vue-cli

扫码查看

常说的vue全家桶指的是:vue-cli、vue-router、vuex、vue-resource。


vue-cli

vue-cli是用来管理vue项目的工具,可以使用vue-cli快速创建项目,启动项目,编译项目等操作。

vue的单文件扩展名是vue文件,需要借助vue-loader才能正常解析。

vue-cli的安装:

如果之前安装过低版本的vue-cli,要先卸载,执行以下命令

然后安装

安装之后检查版本

接下来在文件夹的终端执行以下命令创建vue项目

 命令之后会让我们选择预设,选默认的default就可以,Manually值手动自定义,然后选择npm管理包。

项目创建之后,cd进入项目后,npm run serve(cnpm run serve)运行项目,这样在浏览器中就可以看到效果了。

 接下来在src目录下正常开发项目就可以了,src/main.js是入口页面。

 设置为false用来阻止vue在启动时生成生产提示。dist目录下的文件,就是生产环境下的文件。

 此指令为在项目完毕之后,打包时所用的指令。


项目结构及文件介绍。

1、public/index.html是浏览器访问的入口页面。

2、src目录下保存的是开发环境中的碎片化文件。

3、build文件夹是保存一些webpack的初始化配置。

4、node_modules是npm加载的项目依赖的模块。

5、src目录是我们要开发的目录,打开是这样的:

        其中assets:用来放置图片和css(sass)文件。

        components:用来放组件文件。

        app.vue:是项目入口文件。

6、main.js是项目的核心文件。代码如下:

        import Vue from ‘vue'  (引入vue)

        import App from ‘./App' (引入app.vue文件)

        import router from ‘./router' (引入路由)

7、main.js中的一段代码(创建vue节点,也就是html模板,然后渲染(render)到指定的页面上)

1 new Vue({
2   render: h => h(App),
3 }).$mount('#app')

这段代码的意思是创建一个vue对象,然后挂载到指定的html页面上。这里的重点是:render:h=>h(app)这一段。

首先箭头函数是es6的写法,还原为es5是这样的:

1 //createElement就是h,一个形参,没有具体意义,可以随意改变书写
2 render:(function(createElement){
3     return createElement(App);
4 })

字符串模板的代替方案,允许你发挥 JavaScript 最大的编程能力。该渲染函数接收一个 createElement 方法作为第一个参数用来创建 VNode。

如果组件是一个函数组件,渲染函数还会接收一个额外的 context 参数,为没有实例的函数组件提供上下文信息。

Vue 选项中的 render 函数若存在,则 Vue 构造函数不会从 template 选项或通过 el选项指定的挂载元素中提取出的 HTML 模板编译渲染函数。

8、package.json:在package.json中有eslintConfig 属性,修改ruls规则,允许项目中使用console.log()

1 "rules": {
2     "no-console":"off"
3 }

9、Vueconfig.js的配置: 是vue项目中的配置页面,需要自己创建。config文件夹保存的是一些项目初始化的配置。


proxy代理

proxu代理是解决跨域访问数据的一种方法。由于同源策略(同域名,同端口,同协议)的影响,我们不能去随意的去访问别的不同源的文档。为了解决这种问题,就出现了proxy代理这种方法。流程就是在自己前端访问自己的后端,然后在通过自己的后端去访问你想要去访问的网址。

实现步骤:

1、先引入一个异步加载的模块axios,用它来去请求数据

 2、在项目根目录中,自己创建config.js文件,在其中写入以下代码:

 1 module.exports = {
 2     devServer: {
 3         proxy:{
 4             "/api": {
 5                 target: "https://api.wyyijiaqin.com",
 6                 pathRewrite: { '^/api': '' },
 7                 changeOrigin: true,
 8             }
 9         }
10     }
11 }

3、那么在vue访问"/api"时,实际就是跨域访问"https://api.wyyijiaqin.com"了

 1 import axios from "axios";  //注:在使用axios时要导入该模块
 2 export default {
 3     methods:{
 4         fn(){
 5             axios.get("/api").then(res=>{
 6                 alert(res.data)
 7             })
 8         }
 9     }
10 };

alias别名
在使用vue-cli开发vue项目时,有时候由于项目的需求我们会创建许多的文件夹,一个套一个套了许多层,而我们在需要使用其中一个子文件时,就需要在访问路径时写很长的父文件名,
(比如你想访问一个a下的b中的c下的d中的e,你就得./a/b/c/d/e),为了解决这种比较麻烦的写法,我们就可以使用alias别名。

具体实现代码:


 1 const path = require("path");    //别名代码
 2 function resolve(dir) {          //别名代码
 3     return path.join(__dirname, dir)    //别名代码
 4 }
 5
 6 module.exports = {
 7     devServer: {
 8         proxy: {
 9             "/api": {
10                 target: "https://www.bilibili.com",
11                 pathRewrite: { '^/api': '' },
12                 changeOrigin: true,
13             }
14         }
15     },
16     chainWebpack: config => {       //别名代码
17         config.resolve.alias        //别名代码
18             .set('abc', resolve('src/a/b/c'));  //别名代码 如果只改一个文件夹下的写一个就可以
19
20     }
21 }

然后在app.vue中导入你修改之后的"abc"即可


sass环境

 然后在vue文件中:

 也可以在js文件中使用 import 引入 scss 文件。



以上。
02-13 15:19
查看更多