vue 多页面脚手架 zc-vue-cli
安装使用
$ npm install @2dfire/cli -g
# OR
$ yarn global add @2dfire/cli
安装之后就可以全局使用 fire 命令
创建一个全新的项目
$ fire create my-project
创建一个由 fire 管理的项目
创建好的项目根目录下默认会创建一个 fire.config.js , 里面可以为项目配置一些参数,具体参数后面会标明
-
启动项目: 在根目录下执行 npm run dev 或 yarn dev
-
打包项目: 在根目录下执行 npm run build 或 yarn build
-
如果启动项目时遇到 cannot find module 'xxx' 错误时,那就 npm install 或者 yarn 重新安装一下依赖
-
有些 npm 包特别是 eslint 在安装时可能会报错说这个包在 npm 上找不到,这可能是你 npm 源不对,你可以设置到 npm 淘宝源,再重新安装
创建的工程中无需安装 vue、vue-router、vuex、axios、vue-i18n
特别要注意这点,因为默认自带了这些库,所以不需要再次安装,否则会报错
之所以把这几个库集成进去,是因为希望这几个核心库的版本能统一由脚手架管理
判断一个项目是不是由 @fire/cli 创建的
如何在一个 fire 项目中创建一个新的页面
# 在项目根目录执行
$ fire page my-page
使用这个命令之后,会列出很多模板列表,你必须选择一个作为创建 my-page 页面的模板
所有的模板都在 gitLab 上: http://git.2dfire-inc.com/core-support/fire-vue-page-boilerplate 后续可以增加一些常用模板
为一个页面创建一个路由界面
# 在项目根目录执行
$ fire route my-route
使用这个命令会自动给当前你正在开发的页面创建一个按需加载路由界面
更新 fire 项目配置
# 在项目根目录执行
$ fire update
更新项目配置,每次启动项目(dev)的时候如果发现配置有更新,就会中断启动项目
你必须更新项目配置才能将项目启动起来,这样做是为了让所有由 fire 管理的项目统一配置
这里不直接内部执行 update 的原因是因为可能有些项目不想升级配置,或者说升级了配置会破坏现有代码的正常运行
当你不想强制更新时,你可以在 fire.config.js 中配置 checkVersion 为 false,这样就不会去检测配置是否更新,但会始终给出警告,不建议你这样做
初始化项目
$ fire init
初始化一个不是由 fire-cli 创建的项目或者一个空项目,使其可以被 fire 管理.
-
项目的目录结构也会被修改成和 fire 生成的项目的目录结构一致.
-
不会破坏你项目原本存在的目录结构,但是运行和打包配置将会被 fire 管理,原有的配置将失效
-
由于 fire 是基于 webpack3 以上的,所以如果你原本的配置是基于 webpack3 以下的,那么你的业务代码需要注意的地方如下:
- 所有的 module.exports = 需改为 export default
- 所有的 require('xxx') 需改为 import xx from 'xx'
- 按需加载 require.ensure 需改为 import('xxx') 的方式
- 注意 alias 引用别名,fire 管理的项目 alias 会有所改变,具体看下面的 alias
fire.config.js
根目录下会创建 fire.config.js 来自定义项目配置,具体可配置的选项如下
module.exports = {
page: ['example'],
port: 3000,
publicPath(env) {
return {
dev: '../',
daily: 'http://d.2dfire-daily.com/xxx/',
pre: 'http://d.2dfire-pre.com/xxx/',
publish: 'https://d.2dfire.com/xxx/'
}[env]
},
pxtorem: { rootValue: 37.5 },
imports: null,
theme: {},
alias: {}
}
config.js
src 目录下的每一个页面的根目录下可以建一个 config.js,用来为该页面单独配置相关信息,只对该页面起效
比如 src 下的 example 目录的下建 config.js
后续加入更多配置项,目前只有以下配置项
module.exports = {
vConsole: false,
proxy: {}
}
alias
内置的默认访问别名 alias
-
@env: 不同环境下访问到/src/__BASE__/env 目录下的不同的 js 文件,有 dev、pre、daily、publish,
-
@static: 访问到/static
-
/src/__BASE__目录下的所有一级目录全部会被自动建立对应的 alias,以 '@' 符号开头
全局变量__ENV__
代码中可以通过__ENV__变量知道当前是处于哪个环境下,其值为字符串 dev、pre、daily、publish 其中之一
所以有了__ENV__变量后,__BASE__/env 文件夹是可以不需要的,也建议不要用,之所以加了这个文件夹是为了保持和以前的项目统一
async/await
默认支持 async/await
默认集成的依赖及注意事项
关于内置的@2dfire/share
这是一个工具类仓库,里面有很多方法,包括 cookie,query,GW(网关等),为什么要内置这样一个库?
之前我们会用到很多工具,比如网关会用到@2dfire/gw-params, cookie 会用到 js-cookie ,还有其他各种
这样导致的问题是我要用一个方法都搞不清楚到底哪个库里有,所以我将这些所有的方法全部移到一个库@2dfire/share 里
以后只要维护这一个库就好了,后续会不断在里面增加方法,里面具体有哪些方法请参考:
http://git.2dfire-inc.com/core-support/fire-share/blob/master/README.md
vant
内置一个移动端 UI 库 vant,使用文档 https://youzan.github.io/vant/#/zh-CN/quickstart
默认不开启按需加载,如果要开启使用,需做如下配置
module.exports = {
imports: 'vant'
}
<template>
<div><button @click="handle" type="primary">按钮</button></div>
</template>
<script>
//无需引用css,直接引入即用,按需加载js和css
import { Button } from 'vant'
export default {
components: {
Button
},
methods: {
handle() {
console.log('button')
}
}
}
</script>