typescript vuex_Vue CLI3详细搭建过程以及vue+vuex分析

1d7dcd892b2bdd056ba9d70c4f96f07c.png

01-介绍
Vue CLI 是一个基于 Vue.js 进行快速开发的完整系统。有三个组件:CLI:@vue/cli 全局安装的 npm 包,提供了终端里的vue命令(如:vue create 、vue serve 、vue ui 等命令)CLI 服务:@vue/cli-service是一个开发环境依赖。构建于 webpack 和 webpack-dev-server 之上(提供 如:serve、build 和 inspect 命令)CLI 插件:给Vue 项目提供可选功能的 npm 包 (如:Babel/TypeScript 转译、ESLint 集成、unit和 e2e测试 等)

02-安装1、全局安装过旧版本的 vue-cli(1.x 或 2.x)要先卸载它,否则跳过此步:

a8bac3350cad4f9b31077b8022907be5.png


操作如下:

a68fab601bde4683be6233a87ed3931e.png


可以看到我之前的版本是2.9.6,卸载成功后,vue命令便不存在了ps:npm WARN警告,可能是coffee-script 的某个依赖包改名了(coffee-script本身已经淘汰了)2、Vue CLI 3需要 nodeJs ≥ 8.9 (官方推荐 8.11.0+,你可以使用 nvm 或 nvm-windows在同一台电脑中管理多个 Node 版本)。
(1)查看node 版本

2f07f9066dbf79f7d0bb4a8dadc4744c.png


(2)下载安装nodeJs很简单(和其他系统软件一样根据需求按步骤安装)这里不做介绍,中文官方下载地址:http://nodejs.cn/download/3、安装@vue/cli(Vue CLI 3的包名称由 vue-cli 改成了 @vue/cli)

4c37b61e764cc0aca33bcafc68b6df84.png

操作如下图:

339399ad1cc18d4643f49eee532af98f.png

查看版本:

182a37fea974b1a78d21292b8f6f6843.png

结果如下图:

0d09143164f2a16be305e08e27ca21a1.png

03-使用1、vue create 搭建新项目(1)新建项目:*官方提示:如果你在 Windows 上通过 minTTY 使用 Git Bash,交互提示符并不工作,必须通过 winpty vue.cmd create hello-world 启动这个命令

4069de38db93e601ba08f2548eb11fca.png

具体操作如下:
首先,会提示你选择一个preset(预设):① 除最后两个,其他选项都是你此前保存的预设配置(如下图第一个“ preset-config”是我之前保存的预设配置,如今便可以直接用了):

c9167b0c90be35020a3f02406e2d2366.png

如果没有配置保存过,则只有以下两个选项:
② default(babel,eslint):默认设置(直接enter)非常适合快速创建一个新项目的原型,没有带任何辅助功能的 npm包
③ Manually select features:手动配置(按方向键 ↓)是我们所需要的面向生产的项目,提供可选功能的 npm 包

5e05c0bf0577467f62683000355faae2.png

手动配置,根据你需要用方向键选择(按 “空格键”选择/取消选择,A键全选/取消全选)对应功能

502cec834feb7273fea6fb80557f6b5e.png

简介:

96606128f2266bd59555f3204c50e03e.png

选择完后直接enter,然后会提示你选择对应功能的具体工具包,选择自己擅长或者使用广泛的(方便遇到问题时百度),简介如下:
①是否使用history router:

ab7e57e0daed1f891519922ffbedd2ac.png

Vue-Router 利用了浏览器自身的hash 模式和 history 模式的特性来实现前端路由(通过调用浏览器提供的接口)
hash:浏览器url址栏 中的 # 符号(如这个 URL:http://www.abc.com/#/hello,hash 的值为“ #/hello”),hash 不被包括在 HTTP 请求中(对后端完全没有影响),因此改变 hash 不会重新加载页面
history:利用了 HTML5 History Interface 中新增的 pushState( ) 和 replaceState( ) 方法(需要特定浏览器支持)。单页客户端应用,history mode 需要后台配置支持(详细参见:https://router.vuejs.org/zh/guide/essentials/history-mode.html)
② css预处理器主要为css解决浏览器兼容、简化CSS代码 等问题(* Sass诞生于2007年,最早也是最成熟的一款CSS预处理器语言。)

5236c85b022cc803fd1ec8198d9da881.png


③ ESLint:
提供一个插件化的javascript代码检测工具

6843cc9d814c352c1280b28a3e9c5f4b.png


④ 何时检测:

8e3aa02eafa039582b312537ca562998.png


⑤ 单元测试 :

a71e3f2fb1026ec07361c89d09409ae1.png


⑥ 如何存放配置 :

f7400988e0b3a913c2b8a99837d66896.png


⑦ 是否保存本次配置(之后可以直接使用):

dd3c613db86ced43c246ba666b493821.png

(2)搭建完成:

476740bfd9be39fe8fdc5b0b0b13c74b.png


项目结构如下(不同的预设包含不同的文件,大致结构一致):

033a6db227221ef1af154fa8bc9b1759.png


对比之前的项目包:

4949eb7bdd232c85922d6d6521a3d279.png


精简的只剩灵魂了~ ,主要的大的区别如下:
① vuex(状态管理):vue cli 2 中 :vuex是搭建完成后自己npm install的,并不包括在搭建过程中。可以看到vue cli 2的vuex默认文件夹(store)又包含了三个js文件:action(存放一些调用外部API接口的异步执行的的方法,然后commit mutations改变mutations 数据)、index(初始化mutations 数据,是store的出口)、mutations(处理数据逻辑的同步执行的方法的集合,Vuex中store数据改变的唯一方法commit mutations)vue cli 3 中:vuex是包含在搭建过程供选择的预设。vue cli 3 中默认只用一个store.js代替了原来的store文件夹中的三个js文件。action、mutations、state以及store 的 getters 的用法有很多,举常用的例子:
eg:store.js

3ca0a8299747f21ab8f17705ed8f322a.png


使用时,eg:main.js:

910e12a8fa644cf728d9bf14f9f762f4.png


views/home.vue:

f95b6a3c99ed0349f0d168771a3caa4c.png


② router (路由):vue cli 2 :“ router/index.js ”
vue cli 3:“router.js”(用法和做的事都一样)
③ 去掉 static 、 新增 public 文件夹
vue cli 2 :static 是 webpack 默认存放静态资源的文件夹,打包时会直接复制一份到dist文件夹不会经过 webpack 编译
vue cli 3 :摒弃 static 新增了 public 。vue cli 3 中“静态资源”两种处理方式:
经webpack 处理:在 JavaScript 被导入或在 template/CSS 中通过“相对路径”被引用的资源会被编译并压缩
不经webpack 处理:放置在 public 目录下或通过绝对路径被引用的资源将会“直接被拷贝”一份,不做任何编译压缩处理
④ index.html :
vue cli 2 :“index.html ”
vue cli 3 :“public/index.html ”此模板会被 html-webpack-plugin 处理的
⑤ src/views:
vue cli 3 的 src文件夹 新增 views文件夹 用来存放 “页面”,区分 components(组件)
⑥ 去掉 build(根据config中的配置来定义规则)、config(配置不同环境的参数)文件夹 :
vue cli 3 中 ,这些配置 你可以通过 命令行参数、或 vue.config.js (在根目录 新建一个 vue.config.js 同名文件)里的 devServer 字段配置开发服务器
⑦ babel.config.js:
配置Babel 。Vue CLI 使用了 Babel 7 中的新配置格式 babel.config.js。和 .babelrc 或 package.json 中的 babel 字段不同,这个配置文件不会使用基于文件位置的方案,而是会一致地运用到项目根目录以下的所有文件,包括 node_modules 内部的依赖。官方推荐在 Vue CLI 项目中始终使用 babel.config.js 取代其它格式。
⑧ 根目录的一些其他文件的改变:
之前所有的配置文件都在vue create 搭建时preset预设 或者 后期可以通过 命令参数 、 vue.config.js 中配置
根据需要在根目录下新建 vue.config.js自行配置,eg:(简单配置,更多配置详情参见官网:https://cli.vuejs.org/zh/config/)module.exports = {
baseUrl: '/',// 部署应用时的根路径(默认'/'),也可用相对路径(存在使用限制)
outputDir: 'dist',// 运行时生成的生产环境构建文件的目录(默认''dist'',构建之前会被清除)
assetsDir: '',//放置生成的静态资源(s、css、img、fonts)的(相对于 outputDir 的)目录(默认'')
indexPath: 'index.html',//指定生成的 index.html 的输出路径(相对于 outputDir)也可以是一个绝对路径。
pages: {//pages 里配置的路径和文件名在你的文档目录必须存在 否则启动服务会报错
index: {//除了 entry 之外都是可选的
entry: 'src/index/main.js',// page 的入口,每个“page”应该有一个对应的 JavaScript 入口文件
template: 'public/index.html',// 模板来源
filename: 'index.html',// 在 dist/index.html 的输出
title: 'Index Page',// 当使用 title 选项时,在 template 中使用:<title><%= htmlWebpackPlugin.options.title %></title>
chunks: ['chunk-vendors', 'chunk-common', 'index'] // 在这个页面中包含的块,默认情况下会包含,提取出来的通用 chunk 和 vendor chunk
},
subpage: 'src/subpage/main.js'//官方解释:当使用只有入口的字符串格式时,模板会被推导为'public/subpage.html',若找不到就回退到'public/index.html',输出文件名会被推导为'subpage.html'
},
lintOnSave: true,// 是否在保存的时候检查
productionSourceMap: true,// 生产环境是否生成 sourceMap 文件
css: {
extract: true,// 是否使用css分离插件 ExtractTextPlugin
sourceMap: false,// 开启 CSS source maps
loaderOptions: {},// css预设器配置项
modules: false// 启用 CSS modules for all css / pre-processor files.
},
devServer: {// 环境配置
host: 'localhost',
port: 8080,
https: false,
hotOnly: false,
open: true, //配置自动启动浏览器
proxy: {// 配置多个代理(配置一个 proxy: 'http://localhost:4000' )
'/api': {
target: '<url>',
ws: true,
changeOrigin: true
},
'/foo': {
target: '<other_url>'
}
}
},
pluginOptions: {// 第三方插件配置
// ...
}
}; (3)npm run serve 跑起来~

5dd0895590992327b57f6a9fe20a976e.png

ba7bfd257bc450736cc34760bcd28094.png


webstorm打开项目(个人习惯,你也可以搭建完直接顺势运行),运行后webstorm自动生成了个.idea文件(用来存放项目的配置信息,如:括版本控制信息、历史记录等)

42e158eaef27ed115786d1f2e0d685c3.png

(4)查看运行结果:打开浏览器,输入运行结果提示的地址(上上图红框),enter

317ce27cd8e6c273826be00e97016a71.png

(5)拉取 2.x 模板 (旧版本):
Vue CLI 3 覆盖了旧版本的vue 命令,如果需要使用旧版本的 vue init 功能,可以全局安装一个桥接工具:

49e98ac4961849403857a4261b139282.png

(6)在现有的项目中安装插件(vue add 命令),eg:官方提示:vue add 的设计意图是为了安装和调用 Vue CLI 插件。这不意味着替换掉普通的 npm 包。对于这些普通的 npm 包,你仍然需要选用包管理器
!官方警告:我们推荐在运行 vue add 之前将项目的最新状态提交,因为该命令可能调用插件的文件生成器并很有可能更改你现有的文件。

241782e7f82d5b3f51e1d83913d3093f.png

2、vue ui 图形化界面创建项目

7f3ecc1dcf20bdcc0f08fd6163d6b7e4.png


命令行输入命令,操作如下:

a8a9d2de1c7b88be18b01acefac65df6.png


然后会自动打浏览器页面,选择创建如下:

93e533b0476f850540f5d2d814a07918.png

acb1d5159d460ec11023b4fe8dd7380b.png

d60ec89e4bdcb41def976b00deaa91c4.png


结果如下:页面提示正在安装依赖:

fd0ca4ef39483d372129d12611357405.png


本地已经有项目包了:

79f055c8d2e13957a2901316c9c4c7e9.png


安装完成:你可以在这管理(安装、删除)插件、运行并分析你的项目文件

1a2fa7a7a2fc1ecbe7993bbd2c18e931.png

转载自CSDN博主「不懂代码的小石」,原文链接:https://blog.csdn.net/weixin_44387725/java/article/details/909041
原360教育CTO小班亲授校招Offer月薪6000~10000+
心动了就点击下方课程详细了解吧

https://m.naoffer.com/wenna/index (二维码自动识别)

还有巨大优惠哦!6月7日前报名,立减4000

6月15日前报名,优惠2000

6月25日前报名,优惠1000

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值