vue-cli教程(代码片段)

blogsofsong blogsofsong     2022-10-25     320

关键词:

1.安装vue-cli
再安装完成npm之后,利用npm安装vue-cli,全局安装:npm insall -g vue-cli。倘若npm速度慢,建议替换为cnpm(https://npm.taobao.org/)。

2.初始化vue项目
命令格式为:vue-cli init

重要文件讲解:
package.json
package.json文件是项目根目录下的一个文件,定义该项目开发所需要的各种模块以及一些项目配置信息(如项目名称、版本、描述、作者等)。

package.json 里的scripts字段,这个字段定义了你可以用npm运行的命令。在开发环境下,在命令行工具中运行npm run dev 就相当于执行 node build/dev-server.js  .也就是开启了一个node写的开发行建议服务器。由此可以看出script字段是用来指定npm相关命令的缩    写。

"scripts":
"dev": "node build/dev-server.js",
"build": "node build/build.js"
,
dependencies字段和devDependencies字段

dependencies字段指项目运行时所依赖的模块;
devDependencies字段指定了项目开发时所依赖的模块;
在命令行中运行npm install命令,会自动安装dependencies和devDempendencies字段中的模块。package.json还有很多相关配置,如果你想全面了解,可以专门去百度学习一下。

webpack配置相关
我们在上面说了运行npm run dev 就相当于执行了node build/dev-server.js,说明这个文件相当重要,先来熟悉一下它。 我贴出代码并给出重要的解释。

dev-server.js

// 检查 Node 和 npm 版本
require(‘./check-versions‘)()

// 获取 config/index.js 的默认配置
var config = require(‘../config‘)

// 如果 Node 的环境无法判断当前是 dev / product 环境
// 使用 config.dev.env.NODE_ENV 作为当前的环境

if (!process.env.NODE_ENV) process.env.NODE_ENV = JSON.parse(config.dev.env.NODE_ENV)

// 使用 NodeJS 自带的文件路径工具
var path = require(‘path‘)

// 使用 express
var express = require(‘express‘)

// 使用 webpack
var webpack = require(‘webpack‘)

// 一个可以强制打开浏览器并跳转到指定 url 的插件
var opn = require(‘opn‘)

// 使用 proxyTable
var proxyMiddleware = require(‘http-proxy-middleware‘)

// 使用 dev 环境的 webpack 配置
var webpackConfig = require(‘./webpack.dev.conf‘)

// default port where dev server listens for incoming traffic

// 如果没有指定运行端口,使用 config.dev.port 作为运行端口
var port = process.env.PORT || config.dev.port

// Define HTTP proxies to your custom API backend
// https://github.com/chimurai/http-proxy-middleware

// 使用 config.dev.proxyTable 的配置作为 proxyTable 的代理配置
var proxyTable = config.dev.proxyTable

// 使用 express 启动一个服务
var app = express()

// 启动 webpack 进行编译
var compiler = webpack(webpackConfig)

// 启动 webpack-dev-middleware,将 编译后的文件暂存到内存中
var devMiddleware = require(‘webpack-dev-middleware‘)(compiler,
publicPath: webpackConfig.output.publicPath,
stats:
colors: true,
chunks: false

)

// 启动 webpack-hot-middleware,也就是我们常说的 Hot-reload
var hotMiddleware = require(‘webpack-hot-middleware‘)(compiler)
// force page reload when html-webpack-plugin template changes
compiler.plugin(‘compilation‘, function (compilation)
compilation.plugin(‘html-webpack-plugin-after-emit‘, function (data, cb)
hotMiddleware.publish( action: ‘reload‘ )
cb()
)
)

// proxy api requests
// 将 proxyTable 中的请求配置挂在到启动的 express 服务上
Object.keys(proxyTable).forEach(function (context)
var options = proxyTable[context]
if (typeof options === ‘string‘)
options = target: options

app.use(proxyMiddleware(context, options))
)

// handle fallback for HTML5 history API
// 使用 connect-history-api-fallback 匹配资源,如果不匹配就可以重定向到指定地址
app.use(require(‘connect-history-api-fallback‘)())

// serve webpack bundle output
// 将暂存到内存中的 webpack 编译后的文件挂在到 express 服务上
app.use(devMiddleware)

// enable hot-reload and state-preserving
// compilation error display
// 将 Hot-reload 挂在到 express 服务上
app.use(hotMiddleware)

// serve pure static assets
// 拼接 static 文件夹的静态资源路径
var staticPath = path.posix.join(config.dev.assetsPublicPath, config.dev.assetsSubDirectory)
// 为静态资源提供响应服务
app.use(staticPath, express.static(‘./static‘))

// 让我们这个 express 服务监听 port 的请求,并且将此服务作为 dev-server.js 的接口暴露
module.exports = app.listen(port, function (err)
if (err)
console.log(err)
return

var uri = ‘http://localhost:‘ + port
console.log(‘Listening at ‘ + uri + ‘\n‘)

// when env is testing, don‘t need open it
// 如果不是测试环境,自动打开浏览器并跳到我们的开发地址
if (process.env.NODE_ENV !== ‘testing‘)
opn(uri)

)

// 检查 Node 和 npm 版本
require(‘./check-versions‘)()

// 获取 config/index.js 的默认配置
var config = require(‘../config‘)

// 如果 Node 的环境无法判断当前是 dev / product 环境
// 使用 config.dev.env.NODE_ENV 作为当前的环境

if (!process.env.NODE_ENV) process.env.NODE_ENV = JSON.parse(config.dev.env.NODE_ENV)

// 使用 NodeJS 自带的文件路径工具
var path = require(‘path‘)

// 使用 express
var express = require(‘express‘)

// 使用 webpack
var webpack = require(‘webpack‘)

// 一个可以强制打开浏览器并跳转到指定 url 的插件
var opn = require(‘opn‘)

// 使用 proxyTable
var proxyMiddleware = require(‘http-proxy-middleware‘)

// 使用 dev 环境的 webpack 配置
var webpackConfig = require(‘./webpack.dev.conf‘)

// default port where dev server listens for incoming traffic

// 如果没有指定运行端口,使用 config.dev.port 作为运行端口
var port = process.env.PORT || config.dev.port

// Define HTTP proxies to your custom API backend
// https://github.com/chimurai/http-proxy-middleware

// 使用 config.dev.proxyTable 的配置作为 proxyTable 的代理配置
var proxyTable = config.dev.proxyTable

// 使用 express 启动一个服务
var app = express()

// 启动 webpack 进行编译
var compiler = webpack(webpackConfig)

// 启动 webpack-dev-middleware,将 编译后的文件暂存到内存中
var devMiddleware = require(‘webpack-dev-middleware‘)(compiler,
publicPath: webpackConfig.output.publicPath,
stats:
colors: true,
chunks: false

)

// 启动 webpack-hot-middleware,也就是我们常说的 Hot-reload
var hotMiddleware = require(‘webpack-hot-middleware‘)(compiler)
// force page reload when html-webpack-plugin template changes
compiler.plugin(‘compilation‘, function (compilation)
compilation.plugin(‘html-webpack-plugin-after-emit‘, function (data, cb)
hotMiddleware.publish( action: ‘reload‘ )
cb()
)
)

// proxy api requests
// 将 proxyTable 中的请求配置挂在到启动的 express 服务上
Object.keys(proxyTable).forEach(function (context)
var options = proxyTable[context]
if (typeof options === ‘string‘)
options = target: options

app.use(proxyMiddleware(context, options))
)

// handle fallback for HTML5 history API
// 使用 connect-history-api-fallback 匹配资源,如果不匹配就可以重定向到指定地址
app.use(require(‘connect-history-api-fallback‘)())

// serve webpack bundle output
// 将暂存到内存中的 webpack 编译后的文件挂在到 express 服务上
app.use(devMiddleware)

// enable hot-reload and state-preserving
// compilation error display
// 将 Hot-reload 挂在到 express 服务上
app.use(hotMiddleware)

// serve pure static assets
// 拼接 static 文件夹的静态资源路径
var staticPath = path.posix.join(config.dev.assetsPublicPath, config.dev.assetsSubDirectory)
// 为静态资源提供响应服务
app.use(staticPath, express.static(‘./static‘))

// 让我们这个 express 服务监听 port 的请求,并且将此服务作为 dev-server.js 的接口暴露
module.exports = app.listen(port, function (err)
if (err)
console.log(err)
return

var uri = ‘http://localhost:‘ + port
console.log(‘Listening at ‘ + uri + ‘\n‘)

// when env is testing, don‘t need open it
// 如果不是测试环境,自动打开浏览器并跳到我们的开发地址
if (process.env.NODE_ENV !== ‘testing‘)
opn(uri)

)
webpack.base.confg.js webpack的基础配置文件

...
...
module.export =
// 编译入口文件
entry: ,
// 编译输出路径
output: ,
// 一些解决方案配置
resolve: ,
resolveLoader: ,
module:
// 各种不同类型文件加载器配置
loaders:
...
...
// js文件用babel转码

test: /.js$/,
loader: ‘babel‘,
include: projectRoot,
// 哪些文件不需要转码
exclude: /node_modules/
,
...
...

,
// vue文件一些相关配置
vue:

module.export =
// 编译入口文件
entry: ,
// 编译输出路径
output: ,
// 一些解决方案配置
resolve: ,
resolveLoader: ,
module:
// 各种不同类型文件加载器配置
loaders:
...
...
// js文件用babel转码

test: /.js$/,
loader: ‘babel‘,
include: projectRoot,
// 哪些文件不需要转码
exclude: /node_modules/
,
...
...

,
// vue文件一些相关配置
vue:

vue-cli2,vue-cli3(vue脚手架)超详细教程(代码片段)

文章目录vue-cli脚手架Node.js环境安装vue-cli2的安装npm,cnpm介绍安装脚手架用脚手架生成项目目录vue-cli3的安装使用vue-cli3图形界面vue-cli脚手架顾名思义,脚手架就是用来协助,配合,帮助构建一个项目的。使用vue-cl... 查看详情

vue教程(三十九)vue-cli2脚手架安装(代码片段)

Vue教程(三十九)vue-cli2脚手架安装VueCLI介绍CI是Command-Lineinterface,翻译为命令行界面,但是俗称脚手架。VueCL是一个官方发布vue.js项目脚手架,使用vue-cli可以快速搭建vue开发环境以及对应的webpacki配置。安装NodeJS可以直... 查看详情

vue教程(三十九)vue-cli2脚手架安装(代码片段)

Vue教程(三十九)vue-cli2脚手架安装VueCLI介绍CI是Command-Lineinterface,翻译为命令行界面,但是俗称脚手架。VueCL是一个官方发布vue.js项目脚手架,使用vue-cli可以快速搭建vue开发环境以及对应的webpacki配置。安装NodeJS可以直... 查看详情

vue-cli(vue脚手架)超详细教程(代码片段)

 都说Vue2简单上手容易,的确,看了官方文档确实觉得上手很快,除了ES6语法和webpack的配置让你感到陌生,重要的是思路的变换,以前用jq随便拿全局变量和修改dom的锤子不能用了,vue只用关心数据本身,不用再频繁繁琐的... 查看详情

vue-cli+elementui实现三级城市联动(代码片段)

...tUI实现三级城市联动三级城市联动三级城市联动安装以下教程参考自官方的教程:https://www.npmjs.com/package/element-china-area-data导入执行以下语句安装城市数据:npminstallelement-china-area-data-S引用以vue-cli创建的项目为例,在v 查看详情

vue-cli富文本编辑器(代码片段)

vue-cli富文本编辑器富文本编辑器富文本编辑器来源以下教程参考自官方的教程:https://www.wangeditor.com/安装执行以下语句安装:npmiwangeditor--save使用<template><div><divclass="home"><divid="demo1 查看详情

vue-cli树形结构/组织结构(代码片段)

...构树形结构/组织结构强大的树形结构/组织结构安装以下教程参考自官方的教程:https://github.com/libin1991/vue-okr-tree这里是效果展示页面http://www.longstudy.club/vue-okr-tree-doc/index.html安装执行以下语句安装:npmivue- 查看详情

vue-cli3简qian易yi教程(代码片段)

...地址对于没有了解过vue-cli3的童鞋,建议先去看看官方的教程:传送门新版本的新特性1.插件使用cli的插件,可以很快的搭建一个项目的结构。如axios的插件vue-cli-plugin-axios,可以自动创建一个带有request和resonpose的拦截器的axios的... 查看详情

vue2全家桶之一:vue-cli(vue脚手架)超详细教程(代码片段)

  都说Vue2简单上手容易,的确,看了官方文档确实觉得上手很快,除了ES6语法和webpack的配置让你感到陌生,重要的是思路的变换,以前用jq随便拿全局变量和修改dom的锤子不能用了,vue只用关心数据本身,不用再频繁繁... 查看详情

vue2全家桶之一:vue-cli(vue脚手架)超详细教程(代码片段)

都说Vue2简单上手容易,的确,看了官方文档确实觉得上手很快,除了ES6语法和webpack的配置让你感到陌生,重要的是思路的变换,以前用jq随便拿全局变量和修改dom的锤子不能用了,vue只用关心数据本身,不用再频繁繁琐的操作do... 查看详情

vue-cli2,vue-cli3(vue脚手架)超详细教程(代码片段)

文章目录vue-cli脚手架Node.js环境安装vue-cli2的安装npm,cnpm介绍安装脚手架用脚手架生成项目目录vue-cli3的安装使用vue-cli3图形界面vue-cli脚手架顾名思义,脚手架就是用来协助,配合,帮助构建一个项目的。使用vue-cl... 查看详情

vue-cli3.x部署项目至生产服务器(代码片段)

本教程主要讲解的是Vue-CLI3.x脚手架搭建的vue项目,先构建生成dist文件(纯静态应用),然后自动化部署到静态文件服务器Nginx。 一、Nginx服务器文件的配置serverlisten80;server_namewww.xxxxxx.com;#生产环境location/root/usr/local/www/xxx_program/;ind... 查看详情

vue-cli(vue脚手架)上万字总结,超详细教程(代码片段)

1、创建Vue脚手架1.1、首先系统需要全局安装Vue脚手架npminstall-g@vue/cli1.2、创建Vue脚手架工程进入你想创建vue脚手架的目录,然后输入命令vuecreatexxx项目名需要注意的是工程名字不能大写,这里我们选择选择Vue2,敲... 查看详情

vue-cli简单使用(代码片段)

npminstall-g@vue/cli下载工具vuecreate项目名称通过上面的工具下载vue-cli3.x模板 npminstall-g@vue/cli-init创建vue-cli2.x版本模板vueinitwebpack项目名称 查看详情

vue-cli入门——项目结构(代码片段)

前言在上一篇项目搭建文章中,我们已经下载安装了node环境以及vue-cli,并且已经成功构建了一个vue-cli项目,那么接下来,我们来梳理一下vue-cli项目的结构。总体框架一个vue-cli的项目结构如下,其中src文件夹是需要掌握的,所... 查看详情

vue-cli横向滑动列表(代码片段)

Vue-cli横向滑动列表横向滑动列表横向滑动列表使用vue-cli+elementUI+swiper<template><divclass="IndexRankingboxW1280"><divclass="content"><divclass="title"> 查看详情

vue-cli运行报错(代码片段)

  core-js版本太高安装了淘宝镜像就可以cnpminstallcore-js@2 查看详情

vue-cli3项目创建(代码片段)

安装vue-clinpminstall-g@vue/cli创建项目vuecreate项目名进入项目所在路径cd项目名启动项目npmrunserve 查看详情