【Vue组件文件打包:Vue-Loader】

复制之前上一个项目

然后在我们的src目录中创建App.vue文件

这个文件就是Vue的模块文件

【建议下载IDEA的Vue.js插件】

Vue的模块分为template、script、style

其实就是代表html + javascript + css这三者

<template>
<div>
<span v-text="name" class="title"></span>
</div>
</template> <style scoped>
.title {
color : red;
}
</style> <script>
export default {
data () {
return {
name : "来自App.vue组件的name属性值"
}
}
}
</script>

然后使用main.js导入组件文件

// 引入包的时候,像Java一样 使用import
import App from './App.vue';
let application = new Vue({
el : "#application",
data : {
name : "阿伟"
},
render : e => e(App)
});

不出所料,webpack打包解析不了vue组件文件

这就是前面提到的Loader的概念,我们对Vue组件文件也需要对应的加载器:

vue-loader,vue-template-compiler

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

然后webpack.config.js配置:

const path = require('path');

module.exports = {
entry : "./src/main.js", // 入口 可以是字符串,数组,对象
output : { // 出口,通常是一个对象 至少包含路径和文件名
path : path.resolve(__dirname, 'dist'),
filename : "bundle.js"
},
module : {
rules : [
{ test : /\.css$/, use : ['style-loader', 'css-loader'] },
{ test : /\.vue$/, use : ['vue-loader'] }
]
},
resolve : {
alias : {
'vue$' : 'vue/dist/vue.esm.js'
}
}
}

打包报错:

大概是关于vue-loader版本的问题:

解决是先卸载安装的vue-loader,再重新指定版本安装:

npm uninstall vue-loader

重新安装:

npm install vue-loader@13.3.0

再次打包运行:

【首页打包:HTMLWebpackPlugin】

目前的项目问题:

我们的index文件是存放在项目根目录下,并不是打包的目录,

但是实际项目发布的是使用dist目录,所以这个首页文件也需要打包进去

这需要HTMLWebpackPlugin插件

cnpm install html-webpack-plugin@2.16.0 --save-dev

配置webpack.config.js

const path = require('path');
const htmlWebpackPlugin = require('html-webpack-plugin'); module.exports = {
entry : "./src/main.js", // 入口 可以是字符串,数组,对象
output : { // 出口,通常是一个对象 至少包含路径和文件名
path : path.resolve(__dirname, 'dist'),
filename : "bundle.js"
},
module : {
rules : [
{ test : /\.css$/, use : ['style-loader', 'css-loader'] },
{ test : /\.vue$/, use : ['vue-loader'] }
]
},
resolve : {
alias : {
'vue$' : 'vue/dist/vue.esm.js'
}
},
plugins : [
new htmlWebpackPlugin({
template :
"index.html" //指定打包使用的html模版
})
]

}

可以发现这里的首页自动打上了js文件导入

也就是说这是webpack帮我们写上的

【JS文件压缩:uglifyjs-plugin】

但是还有一个问题就是我们需要对JS文件压缩处理

这就需要uglifyjs-webpack-plugin

npm install uglifyjs-webpack-plugin@1.1.1 --sav-dev

还是一样配置webpack.config.js

const path = require('path');
const htmlWebpackPlugin = require('html-webpack-plugin');
const uglifyJsPlugin = require('uglifyjs-webpack-plugin'); module.exports = {
entry : "./src/main.js", // 入口 可以是字符串,数组,对象
output : { // 出口,通常是一个对象 至少包含路径和文件名
path : path.resolve(__dirname, 'dist'),
filename : "bundle.js"
},
module : {
rules : [
{ test : /\.css$/, use : ['style-loader', 'css-loader'] },
{ test : /\.vue$/, use : ['vue-loader'] }
]
},
resolve : {
alias : {
'vue$' : 'vue/dist/vue.esm.js'
}
},
plugins : [
new htmlWebpackPlugin({
template : "index.html" //指定打包使用的html模版
}),
new uglifyJsPlugin()
]
}

执行之后这个js文件就会压缩格式,可读性极差,

所以插件非常形象的命名为“丑陋化JS”

【Webpack本地服务器搭建】

webpack提供了一个可选的本地开发服务器,基于NodeJS搭建

内部使用的是express框架,实现我们想要的让浏览器自动刷新的效果

npm install webpack-dev-server@2.9.1 --save-dev

配置package.js文件

{
"name": "webpack",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"dev" : "webpack-dev-server --port 3000 --hot",
"build": "webpack"
},
"author": "",
"license": "ISC",
"devDependencies": {
"css-loader": "^3.6.0",
"html-webpack-plugin": "^2.16.0",
"style-loader": "^1.2.1",
"vue-template-compiler": "^2.6.11",
"webpack": "^3.6.0",
"webpack-dev-server": "^2.11.5"
},
"dependencies": {
"uglifyjs-webpack-plugin": "^1.1.1",
"vue": "^2.6.11",
"vue-loader": "^13.3.0"
}
}

输入此命令运行项目:

npm run dev

访问正常:

【Vue】09 Webpack Part5 Vue组件化开发的更多相关文章

  1. Vue基础(三)---- 组件化开发

    基本结构: ◆1.组件化开发思想 ◆2.组件注册 ◆3.Vue调试工具用法 ◆4.组件间数据交互 ◆5.组件插槽 ◆6.基于组件的案例   ◆1.组件化开发思想 优点: 提高开发效率 方便重复使用 简 ...

  2. Vue学习笔记-Vue.js-2.X 学习(二)===>组件化开发

    ===重点重点开始 ========================== (三) 组件化开发 1.创建组件构造器: Vue.extends() 2.注册组件: Vue.component() 3.使用 ...

  3. Webpack+Vue+ES6 前端组件化开发mobile-multi-page应用实战总结和踩坑

    本文版权归博客园和作者吴双本人共同所有 转载和爬虫请注明原文地址 www.cnblogs.com/tdws 一.写在前面 项目上线有一段时间了,一个基于webpack+vue+ES6的手机端多页面应用 ...

  4. Webpack+Vue+ES6 前端组件化开发mobile-multi-page应用实战总结

    本文版权归博客园和作者吴双本人共同所有 转载和爬虫请注明原文地址 www.cnblogs.com/tdws 一.写在前面 项目上线有一段时间了,一个基于webpack+vue+ES6的手机端多页面应用 ...

  5. vue(9)—— 组件化开发 - webpack(3)

    前面两个终于把webpack相关配置解析完了.现在终于进入vue的开发了 vue组件化开发预热 前期准备 创建如下项目: app.js: footer.js: main.js: webpack.con ...

  6. vue(8)—— 组件化开发 - webpack(2)

    webpack的常用loder和插件 loder和插件是什么,现在暂且不表,看到后面你就懂了 引入css问题 直接用link标签导入css 在前面的 vue(7)—— 组件化开发 — webpack( ...

  7. webpack(8)vue组件化开发的演变过程

    前言 真实项目开发过程中,我们都是使用组件化的去开发vue的项目,但是组件化的思想又是如何来的呢?下面就从开始讲解演变过程 演变过程1.0 一般情况下vue都是单页面开发,所以项目中只会有一个inde ...

  8. vue.js组件化开发实践

    前言 公司目前制作一个H5活动,特别是有一定统一结构的活动,都要码一个重复的轮子.后来接到一个基于模板的活动设计系统的需求,便有了下面的内容.借油开车. 组件化 需求一到,接就是怎么实现,技术选型自然 ...

  9. Vue 入门之组件化开发

    Vue 入门之组件化开发 组件其实就是一个拥有样式.动画.js 逻辑.HTML 结构的综合块.前端组件化确实让大的前端团队更高效的开发前端项目.而作为前端比较流行的框架之一,Vue 的组件和也做的非常 ...

  10. vue组件化开发实践

    前言 公司目前制作一个H5活动,特别是有一定统一结构的活动,都要码一个重复的轮子.后来接到一个基于模板的活动设计系统的需求,便有了一下的内容.首先会对使用Vue进行开发的一些前期需要的技术储备进行简单 ...

随机推荐

  1. 新手入门html

    网页的组成:结构 表现 行为 Web标准: 结构  表现 行为 Html  css  js Html和css 是w3c制定标准  js是ECMA制定标准 HTML:指的是超文本标记语言 文件命名的规范 ...

  2. Redux之combineReducers方法

    Redux 提供了一个combineReducers方法,用于 Reducer 的拆分.你只要定义各个子 Reducer 函数,然后用这个方法,将它们合成一个大的 Reducer. import { ...

  3. SQL 如何去掉字段中千位的逗号(比如set @= '1,320.00' 想得到@= '1320.00' )

    1/去掉字段里的逗号.(比如set @= '1,320.00' 想得到@= '1320.00' )UPDATE table SET fieldA = REPLACE(fieldA, ',', '') ...

  4. 判断URL是否编码,编码后的sign对签名和验签都有影响,导致验签不通过

    判断URL是否编码,编码后的sign对签名和验签都有影响,导致验签不通过如果含有 + %符号无法判断, 否则判断不准或报错 Exception in thread "main" j ...

  5. kooder安装及本地搜索git仓库代码

    kooder安装及本地搜索git仓库代码 需求背景:如果需要从Git代码仓库查询某个配置项做批量的更新替换,如果一个一个找不合适且容易遗漏,需要借助第三方工具来模糊查询来实现. 1.下载及文档地址ht ...

  6. Unity UI优化

    UI优化 动静分离.拆分UI.预加载.字体拆分.滚屏优化.网格重构优化.展示关闭优化.对象池.贴图优化.图集拼接优化.UI业务逻辑中GC优化等. 一.动静分离 ** 问题:**unity中UGUI系统 ...

  7. Unity中使用ProtocolBuffer

    Unity中使用ProtocolBuffer unityProtocolBufferUnity ProtocolBuggerC# ProtocolBuffer Unity中使用ProtocolBuff ...

  8. 从零开始学Spring Boot系列-集成Spring Security实现用户认证与授权

    在Web应用程序中,安全性是一个至关重要的方面.Spring Security是Spring框架的一个子项目,用于提供安全访问控制的功能.通过集成Spring Security,我们可以轻松实现用户认 ...

  9. LAMP-CentOS7搭建Web服务器

    搭建LAMP Web服务器 在家中翻到了以前用的老电脑,在思索一番后,决定把这台电脑改造成一台Web服务器,作为我自己搭建博客的测试机器. 一.Linux服务器 LAMP中的L指的是Linux服务器, ...

  10. 动环监控方案,为什么推荐79元全志T113-i国产平台?

    什么是动环监控系统? 通信电源及机房环境监控系统(简称"动环监控系统"),是对分布在各机房的电源柜.UPS.空调.蓄电池等多种动力设备,及门磁.红外.窗破.水浸.温湿度.烟感等机房 ...