使用webpack搭建vue项目实现脚手架功能

本文基于node.js开发环境,安装完node之后新建项目,通过webpack配置,实现vue-cli脚手架功能

对于刚刚接触编程的人来说,最难的可能并不是学习一种新语法或者框架,而是编程思维,这种思维在调试的时候显得尤为重要,拥有良好的编程习惯和思维能力可以大幅度提高调试效率。而编程思维的培养往往需要经验的积累,只有把底层原理一遍遍地思考之后,才会有更深入的理解,这也是vue官方文档中不建议vue初学者直接使用vue-cli的原因之一。

所以今天特意一步步通过webpack配置,实现与vue-cli相同的效果,希望大家能有所收获。

1. 创建一个vue项目

使用命令行mkdir vuedeom 或者直接新建一个vuedemo空文件夹,然后命令行cd vuedemo,使用npm init -y初始化,此时你会看到文件夹多了一个package.json的文件,内容大致如下:

{
 "name": "vuedemo",
 "version": "1.0.0",
 "description": "",
 "main": "index.js",
 "scripts": {
 "test": "echo \"Error: no test specified\" && exit 1"
 },
 "keywords": [],
 "author": "",
 "license": "ISC"
}

2. 引入webpack

通过npm加载webpack,当然如果速度慢的话你也可以使用淘宝镜像,npm install -g cnpm –registry=https://registry.npm.taobao.org,然后输入命令:cnpm install webpack --save-dev

接下来我们在项目根目录创建一个src文件,有一个main.js,再创建一个webpack.config.js,最后修改package.json的脚本:

const path = require('path') //引入node内置模块path
module.exports ={
 entry:'./src/main.js',  // 入口文件,把src下的main.js编译到出口文件
 output:{     //出口文件
  path:path.resolve(__dirname,'dist'), //出口路径和目录
  filename:"demo.js"      //编译后的名称
 }
}
//package.json
{
 "name": "vuedemo",
 "version": "1.0.0",
 "description": "",
 "main": "index.js",
 "scripts": {
 "build":"webpack" //当使用npm run build的时候就会执行webpack,按照提示安装webpack-cli
 },
 "keywords": [],
 "author": "",
 "license": "ISC"
}

3. babel编译

虽然ES6语法已经广泛普及,但各个浏览器还不是特别兼容,为了避免出错我们需要把ES6转成ES5,使用babel进行编译

npm install --save-dev babel-core babel-loader

加载完成之后,在webpack.config.js配置

const path = require('path')

module.exports ={
 entry:'./src/main.js',
 output:{
  path:path.resolve(__dirname,'dist'),
  filename:"demo.js"
 },
 module:{
  rules:[ //遍历规则
   {
    test: /\.js$/, //匹配以js结尾的文件
    loader:"babel-loader", // 使用babel-loader编译
    exclude: /node_modules/ //node_module里面的内容不遍历
   }
  ]
 }
}

我测试的时候出现了这样的错误,如果有相同情况的可以参考下:

Error: Cannot find module '@babel/core'
 babel-loader@8 requires Babel 7.x (the package '@babel/core'). If you'd like to use Babel 6.x ('babel-core'), you should install 'babel-loader@7'.

这是因为版本之间的不兼容,按照上面的要求,你可以安装低版本的babel-loader@7

也有可能webpack会发出这样的警告:

WARNING in configuration
The 'mode' option has not been set, webpack will fallback to 'production' for this value. Set 'mode' option to 'development' or 'production' to enable defaults for each environment.

你需要给脚本配置一个环境,一般build我们会用生产环境webpack --mode production,而dev会使用生产环境webpack --mode development (这个下面会讲)

另外,有时候我们可能会遇到不能识别webpack命令,原因未知,不过重新安装一次就可以了...

接下来需要让babel-loader翻译官具有翻译的功能:

npm install babel-preset-es2015 --save-dev

并且新建一个.babelrc的文件,里面新建

{ "presets":["es2015"] }

如果需要转译ES7语法,你还需要安装

npm install babel-preset-stage-0 --save-dev

同样在.babelrc添加

{
"presets":["es2015"."stage-0"]
}

每次修改配置之后都要重新编译:npm run build

4. 解析样式

上面我们实现了vue引入和es6以及es7语法转译,现在我们来解析样式,需要安装两个包

npm install css-loader style-loader --save-dev

css-loader将css解析成模块,style-loader将解析的内容插入到style标签内

别忘了在配置里webpack.config.json添加规则

rules:[{test:/\.css$/,use:['style-loader','css-loader']}]

但是大多数时候,我们在vue中会使用样式预处理语言,比如sass、less、stylus,同样地我们需要安装对应的包,添加对应的规则

npm install less less-loader --save-dev
rules:[ {test:/\.less$/,use:['style-loader','css-loader','less-loader']}]

5. 解析图片

图片是大多数项目不可获取的部分,怎样解析图片呢?和解析样式步骤差不多,我们需要先安装包再添加规则

npm install file-loader url-loader --save-dev
rules:[

{test:/\.(jpg|png|gif)$/,use:'url-loader?limit=8192'},

{test:/\.(eot|svg|woff|woff2|wtf)$/,use:'url-loader'}

]

limit表示转化base64只在8192字节一下转化,其他情况输出图片

6. 解析html

我们希望build之后能有一个html文件,能直接看到编译之后的效果

这时就需要一个插件,插件的作用是以我们自己的html为模板将打包后的结果,自动引入到html中产出到dist目录下

npm install html-webpack-plugin --save-dev

在webpack.config.js引入这个插件

let HtmlWebpackPlugin = require('html-webpack-plugin')
module.exports = {
 ....省略
 plugins:[new HtmlWebpackPlugin({ //自动插入到dist目录中
  template:'./index.html' //使用模板
  filename:'login.html'   //产出名称(一般不写)
 })]
}

build之后你就可以看到dis下有一个index.html文件

 7. 开发环境

一个项目创建分为开发环境和生产环境(上线),那么在开发的时候每次都需要build很不方便,而且build之后相当于最终的代码,不能随意更改,我们需要把这些内容都放到内存中,通过npm run dev打开

npm install webpack-dev-server --save-dev

这里边内置了服务,可以帮我们启动一个端口号,当代码更新时,自动在内存中打包,代码有变化就重新执行

并且在package.json添加一个新脚本:"dev":"webpack-dev-server --mode development"

一般webpack-dev-server会内置一个端口,通过这个端口就能查看编译的内容了,比如我的端口号:http://localhost:8080

8. 配置vue

上面我们已经实现了基本的webpack配置,完成了html、css、less、图片、js等文件的解析,但我们最终想要的适合vue-cli一样的效果,这就要求我们还要对vue语法进行解析,如果你在main.js引入vue模块,使用vue时,你会发现控制台打印这样的错误

vue.runtime.esm.js:620 [Vue warn]: You are using the runtime-only build of Vue where the template compiler is not available. Either pre-compile the templates into render functions, or use the compiler-included build.

这是因为默认的vue引用的是vue.runtime.common.js,不能编译模板,你可以在引入vue的时候直接import Vue from 'vue/dist/vue'

另外一种办法是,你可以使用render函数,注意render()要有返回值

但是不管是改变vue引用js还是使用render函数都是不方便的,我们更希望页面组件能以.vue文件加载到html文件中

我们可以通过安装vue-loader(解析.vue文件)和vue-template-compiler(解析template模板)实现

npm install vue-loader vue-template-compiler --save-dev

之后我们在main.js引入App.vue模块,然后在render()引用:render:(h)=>h(App)

最后

到这里我们就实现了和vue-cli初始化出来的vue项目一样的效果,其实整个过程并不算太难,不过一步步实现还是很有帮助,vue初学者可以动手试试。当然,文章可能会有我疏忽的地方,有问题随时联系我呀~

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 详解vue-cli脚手架中webpack配置方法

    什么是webpack webpack是一个module bundler(模块打包工具),所谓的模块就是在平时的前端开发中,用到一些静态资源,如JavaScript.CSS.图片等文件,webpack就将这些静态资源文件称之为模块 webpack支持AMD和CommonJS,以及其他的一些模块系统,并且兼容多种JS书写规范,可以处理模块间的以来关系,所以具有更强大的JS模块化的功能,它能对静态资源进行统一的管理以及打包发布,在官网中用这张图片介绍: 它在很多地方都能替代Grunt和Gulp,因为它

  • 详解vue2.0脚手架的webpack 配置文件分析

    前言 作为 Vue 的使用者我们对于 vue-cli 都很熟悉,但是对它的 webpack 配置我们可能关注甚少,今天我们为大家带来 vue-cli#2.0 的 webpack 配置分析 vue-cli 的简介.安装我们不在这里赘述,对它还不熟悉的同学可以直接访问 vue-cli 查看 目录结构 . ├── README.md ├── build │ ├── build.js │ ├── check-versions.js │ ├── dev-client.js │ ├── dev-server

  • 脚手架vue-cli工程webpack的作用和特点

    Vue项目开发过程中,会因为很多不同的实际运用需求不断地对webpack配置进行修改,在此之前,我们需要对webpack有一个基本的认识,了解它到底能为我们做些什么 webpack是一个模块打包的工具,它的作用是把互相依赖的模块处理成静态资源,如下图所示.. webpack的作用: ●把依赖树按需分割: ●把初始加载时间控制在较低的水平: ●每个静态资源都应该成为一个模块: ●能把第三方库集成到项目里成为一个模块: ●能定制模块打包器的每个部分: ●能适用于大型项目. webpack的特点: ●

  • 使用vue-cli脚手架工具搭建vue-webpack项目

    最近更新了webpack配置详解,可移步vue-cli webpack详解 对于Vue.js来说,如果你想要快速开始,那么只需要在你的html中引入一个<script>标签,加上CDN的地址即可.但是,这并不算是一个完整的vue实际应用.在实际应用中,我们必须要一系列的工具,包括:模块化,转译,预处理,热加载,静态检测和自动化测试等.对于一个需要长期维护和大型的项目而言,这些工具是必不可少的,但是尝试配置初始化这些很痛苦.这就是我们发布vue官方提供的脚手架工具的原因,一个简单的构建工具,通过

  • 详解使用vue脚手架工具搭建vue-webpack项目

    对于Vue.js来说,如果你想要快速开始,那么只需要在你的html中引入一个<script>标签,加上CDN的地址即可.但是,这并不算是一个完整的vue实际应用.在实际应用中,我们必须要一系列的工具,包括:模块化,转译,预处理,热加载,静态检测和自动化测试等.对于一个需要长期维护和大型的项目而言,这些工具是必不可少的,但是尝试配置初始化这些很痛苦.这就是我们发布vue官方提供的脚手架工具的原因,一个简单的构建工具,通过几个默认的步骤帮助你快速的构建Vue.js项目. 1.安装node环境 可以

  • 一步步教你利用webpack如何搭一个vue脚手架(超详细讲解和注释)

    Vue作为前端三大框架之一截至到目前在github上以收获44,873颗星,足以说明其以悄然成为主流.16年10月Vue发布了2.x版本,经过了一段时间的摸索和看官方的教程和api,才了解到2.0版本在1.0版本的基础上做了好多调整,废弃了好多api. 本文将详细介绍关于利用webpack搭一个vue脚手架的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 一.适用人群 1.对webpack知识有一定了解但不熟悉的同学. 2.女同学!!!(233333....) 二.目

  • 脚手架vue-cli工程webpack的基本用法详解

    webpack的打包依赖于它的一个重要配置文件webpack.config.js,在这个配置文件中就可以指定所有在源代码编译过程中的工作了,就一个配置就可以与冗长的Gruntfile或者Gulpfile说再见了. 一个完整的工程项目中的webpack的配置远远没有这么简单,随着工程的构建要求的增加,webpack.config.js内的配置项目也会随之增加,webpack还有许许多多的选项提供给我们进行灵活配置,它只是一个构建工具,我们只需要了解在Vue项目中它基本能为我们做到的工作.最小化的配

  • 使用webpack搭建vue项目实现脚手架功能

    本文基于node.js开发环境,安装完node之后新建项目,通过webpack配置,实现vue-cli脚手架功能 对于刚刚接触编程的人来说,最难的可能并不是学习一种新语法或者框架,而是编程思维,这种思维在调试的时候显得尤为重要,拥有良好的编程习惯和思维能力可以大幅度提高调试效率.而编程思维的培养往往需要经验的积累,只有把底层原理一遍遍地思考之后,才会有更深入的理解,这也是vue官方文档中不建议vue初学者直接使用vue-cli的原因之一. 所以今天特意一步步通过webpack配置,实现与vue-

  • 使用webpack搭建vue项目及注意事项

    有一句话叫"前人栽树后人乘凉",还有一句话叫"如果说我看得比别人更远些,那是因为我站在巨人的肩膀上".前一句是国人的俗语,后一句是那个发现了"万有引力"定律的牛顿说的.为什么要引用这两句呢?是因为我刚开始用vue的时候,使用的是vue-cli来搭建vue项目,快速又好用:我刚开始用react的时候,使用的是create-react-app来搭建react项目,方便又省事.使用这些已有的脚手架来搭建项目,无可厚非,对于新手来说,也确实能快速构建,不

  • webpack搭建vue 项目的步骤

    前期准备 webpack vue.js npm nodejs ES6语法 由于本文内容是通过npm来加载vue,所以开始之前需安装nodejs环境,安装完成之后再执行以下步骤: 创建项目 mkdir vue-demo cd vue-demo 使用 npm init 命令 生成package.json文件 npm init 大概生成的package.json 如下: { "name": "vue-demo", "version": "1.

  • 详解用vue-cli来搭建vue项目和webpack

    vue-cli 用vue-cli来搭建vue项目 第一步:全局安装vue-cli sudo npm install vue-cli -g 第二步:初始化一个项目 vue init webpack-simple projectName 第三步:把文件切换到初始化的项目中 cd projectName 第四步:安装依赖 npm install 当然也可以用淘宝镜像cnpm来安装,这样快很多 cnpm install 第五步:运行 npm run dev 完成一个初始化vue项目 webpack 要开

  • 利用Vue-cli搭建Vue项目框架的教程详解

    首先安装node.js 1.在新建的目录中按住shift 鼠标右键,在此处打开命令窗口,版本保证在4.x以上 node -v 2.全局安装vue脚手架 npm install -g vue-cli 同时可以使用vue和vue list 命令查看 3.初始化模板配置和项目名字 vue init webpack mycharts mycharts是项目名 其中有许多需要选择的选项,eslint适合团队开发,规范代码之类的,个人开发我喜欢用stylus,所以这个选项我不会选n,其他Y 4.有提示就按e

  • 安装node.js以及搭建vue项目过程中遇到的问题详解

    目录 一.node.js安装 二.如何找node.js历史版本 1.点击DOWNLOADS 2.点击页面下方 3.翻页找到历史版本 三.检查是否安装成功? 四.安装成功后需要配置环境变量: 五.环境搭建 六.项目创建 总结 一.node.js安装 进入官网 https://nodejs.org/en/download/ 直接点击下载安装!安装过程直接下一步就行: 二.如何找node.js历史版本 (https://nodejs.org/en/download/) 1.点击DOWNLOADS 2.

  • 9102年webpack4搭建vue项目的方法步骤

    前言 首先祝大家元宵节快乐,最近已经好久没有写过文章了,刚好趁着这几天刚刚上班,领导还没有来,偷偷的写一篇关于webpack搭建vue的博客.因为公司使用vue比较多,构建vue项目使用vue-cli显得有点臃肿,感觉还是自己配置比较好些,所以就有了这篇教程.由于水平有限,欢迎大家指正,一起进步. 新建项目 1.新建名为webpackconfig文件夹 2.使用命令 npm init -y 在webpackconfig文件夹中生成package.josn 3.下载依赖包 npm i webpac

  • 使用webpack搭建vue环境的教程详解

    1.安装node.js,在官网下载,直接下一步,完成.nodejs里默认包含npm环境.国内安装包的速度太慢,建议使用cnpm淘宝镜像. npm install -g cnpm --registry=https://registry.npm.taobao.org 2.vue-cli构建SPA应用 安装vue:npm install vue -g 安装vue-cli:npm install -g vue-cli 使用webpack构建一个简单项目:vue init webpack-simple d

  • VSCode搭建Vue项目的方法

    在vscode上搭建一个vue项目---初学总结. 1.假设Vscode.nodejs等已经安装好了. 2.全局安装vue-cli,vue-cli可以帮助我们快速构建Vue项目. 安装命令: npm install -g vue-cli 打开VScode的终端,调出命令输入框.点击终端-新建终端,输入上述命令,回车,等待安装完成. 3.安装webpack,它是打包js的工具 安装命令: npm install -g webpack 安装方法同上. 4.安装完成之后就可以开始创建vue项目,首先创

  • 使用vue cli4.x搭建vue项目的过程详解

    cli-4.x已经发布好久了,斟酌了好久,还是决定将原来的cli-2.x升级到4.x,详细的升级过程可以戳这里 1.创建项目 vue create vuetest 2.选择配置方式 ? Please pick a preset: (Use arrow keys) ☜(使用箭头键) > default (babel, eslint) ☜(使用默认的配置,会安装babel和eslint) Manually select features ☜(手动配置) 这里我选择的是手动配置(使用↑ ↓箭头切换,E

随机推荐