vue-10工程化


必备知识 ——Vue Cli

快速原型开发

你可以使用 vue serve 和 vue build 命令对单个 *.vue 文件进行快速原型开发。

安装 @vue/cli-service-global 扩展

npm install -g @vue/cli-service-global

准备一个内容原型

vue serve

启动一个服务并运行原型

vue serve Hello.vue

创建项目

vue create

创建一个vue项目

vue create my-vue-test

vue ui

图形化项目管理

vue ui

范例:移植之前创建的cart内容到当前项目中来

插件

Vue CLI 使用了一套基于插件的架构。插件可以修改 webpack 的内部配置,也可以向 vue-cli- service 注入命令。在项目创建的过程中,绝大部分列出的特性都是通过插件来实现的。

在现有的项目中安装插件

如果你想在一个已经被创建好的项目中安装一个插件,可以使用 vue add 命令。

vue add router

开发

处理资源路径

当你在 JavaScript、CSS 或 *.vue 文件中使用相对路径 (必须以 . 开头) 引用一个静态资源时,该资源将被webpack处理。

转换规则

如果 URL 是一个绝对路径 (例如 /images/foo.png ),它将会被保留不变。

Vue logo 
Vue logo

如果 URL 以 . 开头会作为一个相对模块请求被解释并基于文件系统相对路径。

Vue logo

如果 URL 以 ~ 开头会作为一个模块请求被解析。这意味着你甚至可以引用 Node 模块中的资源:


如果 URL 以 @ 开头会作为一个模块请求被解析。Vue CLI 默认会设置一个指向 src 的别名 @ 。

import Hello from '@/components/Hello.vue'

何时使用 public 文件夹

通过 webpack 的处理并获得如下好处:

脚本和样式表会被压缩且打包在一起,从而避免额外的网络请求。

文件丢失会直接在编译时报错,而不是到了用户端才产生 404 错误。

最终生成的文件名包含了内容哈希,因此你不必担心浏览器会缓存它们的老版本。

如下情况考虑使用public文件夹

你需要在构建输出中指定一个固定的文件名字。

你有上千个图片,需要动态引用它们的路径。

有些库可能和 webpack 不兼容,除了将其用一个独立的

数据访问相关

数据模拟

使用开发服务器配置before选项,可以编写接口,提供模拟数据。

devServer:{ 
    before(app) { 
        app.get('/api/courses', (req, res) => { 
            res.json([
                { name: 'web全栈', price: 8999 }, 
                { name: 'web高级', price: 8999 }
            ])
        }) 
    } 
}

调用

import axios from 'axios' 

export function getCourses() { 
    return axios.get('/api/courses').then(res => res.data) 
}

代理

设置开发服务器代理选项可以有效避免调用接口时出现的跨域问题。

devServer: { 
    proxy: 'http://localhost:3000' 
}

测试接口

// 需要安装express:npm i express 

const express = require('express') 
const app = express() 

app.get('/api/courses', (req, res) => { 
    res.json([
        { name: 'web全栈', price: 8999 }, 
        { name: 'web高级', price: 8999 }
    ]) 
})

app.listen(3000)