哇哦 快速入门VUE脚手架

34 阅读7分钟

Vue脚手架

vue脚手架指的是vue-cli

它是一个专门为单页面应用快速搭建繁杂的脚手架,它可以轻松的创建新的应用程序而且可用于自动生成vuewebpack的项目模板


webpack可以看做是模块打包机: 它会分析项目结构,找到js模块以及其它的一些浏览器不能直接运行的拓展语言[ScssTypeScript]等,并将其打包为合适的格式以供浏览器使用

脚手架安装

要想使用vue脚手架

  • windows下配置cnmp环境

首先通过nodejs官网下载nodejs,这之后你将具有一个类似pip的包管理工具npm

默认的使用NPM可能会因为网络问题而导致无法使用或延迟居高,可以使npm升级为cnpm,从国内淘宝镜像中加载所需的npm软件源

npm install -g cnpm --registry=https://registry.npm.taobao.org
  • 设置安装包缓存路径
cnpm config set cache "C:\nodejs\node_cache"
  • 设置安装包位置
cnpm config set prefix "C:\nodejs\node_global"

之后使用-g命令安装的模块存储在C:\nodejs\node_global\node_modules

请按照个人需求设置你的文件位置

npm config set cache "C:\nodejs\node_cache"

webpack 可以帮助自动对js、css等资源进行打包,避免了多次对vue.js的导入使用,可以方便的进行路由管理

  • 安装vue脚手架
cnpm install vue-cli -g

-g参数代表全局位置安装,这样可以在环境变量生效的情况下直接在命令行等工具下使用vue命令行进行项目的开启


如果是使用mac的同学道理是类似的,通过安装nodejs之后,设置npm,并安装vue即可,如果无法使用命令,可以检查环境变量配置等问题

第一个项目

通过vue-cli脚手架开启一个项目

vue init webpack myproject
- Project name: 项目名称,如果不需要就直接回车。注:此处项目名不能使用大写。
- Project description: 项目描述,直接回车
- Author:作者
- vue build: 构建方式 默认即可
- install vue-router? 是否安装vue的路由插件

- Use ESLint to lint your code? 是否使用ESLint检测你的代码?
	(ESLint 是一个语法规则和代码风格的检查工具,可以用来保证写出语法正确、风格统一的代码。)
	
- Pick an ESLint preset:选择分支风格
	1.standard(https://github.com/feross/standard) js的标准风格
	2.Airbnb(https://github.com/airbnb/javascript) JavaScript最合理的方法,这个github	地址说是JavaScript最合理的方法
	3.none (configure it yourself) 自己配置
	
- Setup unit tests? 是否安装单元测试
- Pick a test runner 选择一个单元测试运行器
	1.Jest(Jest是由Facebook发布的开源的、基于Jasmine的JavaScript单元测试框架)
	2.Karma and Mocha
	3.none
	
- Setup e2e tests with Nightwatch(Y/n)?是否安装E2E测试框架NightWatch
	(E2E,也就是End To End,就是所谓的“用户真实场景”。)
	
- Should we run 'npm install' for you after the project has been created?
项目创建后是否要为你运行“npm install”?
	yes,use npm(使用npm)
	yes,use yarn(使用yarn)
	no,I will handle that myself(自己操作)
  • 启动开发服务器
cd myproject # 进入目录
cnpm install # 安装依赖
cnpm run dev # 开启服务

vue启动服务之后,是通过一个小型的express服务进行测试开发环境部署,在这个服务中,主要是通过webpack-dev-middlewarewebpack-hot-middleware这两个中间件完成,并且会在每次代码对于src目录下的代码进行修改时,服务端会动态检测并让浏览器自动刷新

  • 项目目录介绍
- src # 主开发目录,所有的单文件组件都会放在这个目录下
- static # 项目静态目录,所有的css、js都会放在这个文件夹下
- dist # 项目打包发布文件夹,最后要上线单文件夹项目都在这个文件夹中
- node_modules # node的包目录
- config # 配置目录,主要用于区分开发环境,测试环境,线上环境的不同
- build # 项目打包时依赖的目录,之后这其中的内容将会部署发布

App.vue

vue项目中,App.vue文件用来渲染子组件页面,同时要记得去掉vuelogo

<template>
  <div id="app">
    <router-view />
  </div>
</template>

ES6语法

ES6JavaScript语言的新版本,它也可以叫做ES2015,之前学习的JavaScript属于ES5ES6在它的基础上增加了一些语法

ES6是未来JavaScript的趋势,而且vue组件开发中会使用很多的ES6的语法,所以掌握这些常用的ES6语法是必须的

并且在vue脚手架中,也需要大量配合es6语法进行代码编写

变量声明

  • let:定义封闭作用域的变量,并且变量只能声明一次
  • const:定义封闭作用域的常量,并且变量只能声明一次

letconst是新增的声明变量的开头的关键字,在这之前,变量声明是用var关键字

这两个关键字和var的区别是,它们声明的变量没有预解析,无法脱离定义空间使用

letconst的区别是,let声明的是一般变量,const申明的常量,不可修改

console.log(a) // undefined
console.log(b) // b is not defined
console.log(c) // c is not defined
var a =  1
var a = 2
let b = 2
// let b = 3 // Identifier 'b' has already been declared
const c = 3
// const c = 4 // Identifier 'c' has already been declared
c = 4 //  Assignment to constant variable

箭头函数

可以把箭头函数理解成匿名函数的第二种写法,箭头函数的作用是可以在对象中绑定this,继承外部作用域下的变量

这解决了JavaScriptthis指定混乱的问题

  • 定义函数的一般方式
function func(){
    ...
}
  • 匿名赋值创建函数
var func = function(){
    ...
}
  • 箭头函数的写法
var func = (a, b) => {
    // 这样的函数在嵌套时,会自动绑定外部作用域下的this
}
var func = a => {
    // 一个参数时,可以省略参数
}
var vm = new Vue({
    el: "#container",
    data: { message: "abcdef", },
    methods: {
        show() {
            console.log("这是show函数:", this.message),
                func = () => {
                console.log("我是内部函数:", this.message)
            },
           	func(), // 调用一下这个内部函数
        }
    }
})
<div id="container">
    <button @click="show">按钮</button>
</div>

组件开发

在脚手架中,原先的页面逻辑将会被拆分成单独的一个个后缀为.vue的组件

这些vue的组件将相关的html结构,css样式,以及交互的JavaScript代码从html文件中剥离出来,合成一个文件

这种文件就是单文件组件,相当于一个组件具有了结构、表现和行为的完整功能,方便组件之间随意组合以及组件的重用

组件文件一般定义在src目录下的components文件夹里


template标签定义HTML部分

<teamplate>
    <div class="" @click="">
        <label>
        	账号
            <input type="text">
        </label>
    </div>
</teamplate>

js写成模块导出的形式

// 使用export default命令,为模块指定默认输出
export default{
    data: function(){
        return {
            name:"张三",
            age:16,
        }
    }
}

组件样式编写,如果含有scope关键字,表示这些样式是组件局部的,

<style scoped>
.beauty{
    width:100px;
    line-height:50px;
    border-bottom:1px solid #ddd;
    margin:0px auto;
}
</style>

路由配置

如果脚手架项目选择安装了vue-router组件,那么可以很方便的进行组件的路由映射

vue-router也是官方支持的路由库

默认的,vue-router的路由配置在项目的src/router/index.js

在路由映射文件中导入组件时,可以使用@符号,@代表从src目录起;比如

import index from '@/components/index'

定义相关组件的路由,可以通过初始化vue-router对象

import index from '@/components/index'
import Router from 'vue-router'

export default new Router({
  mode: 'history',
  routes: [
    {
      path: '/', // 访问路径
      component: index,
    },
    ...
  ]	
})

构建好的路由对象,需要通过Vue.use加载

import Vue from 'vue'

Vue.use(Router)

路由渲染

App.vue中,会通过<router-view></router-view>标签进行路由加载

这也可以简写为: <router-view/>,该标签会自动将此时的路由对应的映射组件,渲染到页面上

<template>
  <div id="app">
    <router-view></router-view>
  </div>
</template>

比如路由中输入/index,那么router-view会根据在路由映射处的规则,渲染/index对应的页面