一周精通Vue(三)webpack、代码抽离
webpack
webcpak的核心有两个 一个是模块化 让我们可以进行模块化开发,并且会帮助我们处理模块之间的依赖关系 一个是打包 不仅仅是JavaScript文集 我们的css,图片,json文件等 在webpack中都可以被当做模块来使用 node -v 首先安装node 我这里安装的是10.15.3
# 全局安装webpack npm install webpack@3.6.0 -g # 安装项目依赖 npm install webpack@3.6.0 -save-dev webpack -version # 查看webpack版本
-
打包
在终端运行webpack命令时 都是使用全局的webpack 如果使用项目webpack 需要配置devDependencies
# webpack 命令打包指定文件 如果有依赖则自动继承依赖打包 webpack ./src/main.js ./dist/bundle.js
- 配置
创建一个 webpack.config.js npm init # 初始化package.json配置文件 自动生成package.json文件 npm install # 安装package 自动生成 package-lock.json
// file: webpack.config.js const path = require('path'); module.exports = { // 打包入口文件 entry: './src/main.js', // 出口文件 output: { // 出口文件绝对路径 path: path.resolve(__dirname, './dist'), // 打包后的文件名字 filename: 'bundle.js' } };
loader
官方链接:https://webpack.js.org/loaders
css样式文件
# 1. 安装loader npm install --save-dev css-loader npm install --save-dev style-loader
const path = require('path'); module.exports = { // 打包入口文件 entry: './src/main.js', // 出口文件 output: { // 出口文件绝对路径 path: path.resolve(__dirname, './dist'), // 打包后的文件名字 filename: 'bundle.js' }, module: { rules: [ { test: /\.css$/i, // css-loader 只负责将css文件加载 // style-loader 负责将样式添加到dom中 // 这里配置顺序需要注意 是从后向前加载的 use: ['style-loader', 'css-loader'], }, ], }, };
- less 样式文件
安装 less-loader
npm install --save-dev less-loader less - img 图片文件
安装 url-loader
npm install --save-dev url-loader安装 file-loader
npm install --save-dev file-loader - ES6 -> ES5 语法处理
安装babel-loader
npm install --save-dev babel-loader@7 babel-core babel-preset-es2015
配置Vue
- 安装vue 添加运行时依赖
npm install vue --save - new Vue
// 使用vue进行开发 import Vue from 'vue' const vm = new Vue({ el: "#app", data: { msg: "Vue message!", }, methods: {} });
修改HTML
<div id="app"> {{msg}} </div>
-
runtime-orly
没有template功能 代码中 不能包含任何的template内容
-
runtime-compiler
拥有template 代码中可使用 template代码内容
-
解决runtime-orly报错
指定runtime版本
- 配置webpack.config.js
resolve: { alias: { // 指定 在其他地方导入vue的时候 vue来自哪里 // 在node_modules/vue/dist/ 中 默认是 vue.runtime.esm.js 修改为 vue.esm.js 'vue$': 'vue/dist/vue.esm.js' } }
-
el 和template的区别
如果在Vue实例中写了 el 又写了template 那么 template会替换掉el挂载的元素
- 安装 vue-loader
开发依赖
npm install vue-loader vue-template-compiler --save-dev
代码抽离
src ├── css │ ├── narmal.css │ └── special.less ├── img │ ├── Ink\ Cloud.jpg │ └── timg.jpeg ├── js │ └── demo.js ├── main.js └── vue │ ├── App.vue │ └── Cpn.vue │ └── index.html │ └── package.json │ └── webpack.config.js │ └── dist │ └── node_modules
// file:webpack.config.js // 配置 loader const path = require('path'); module.exports = { // 打包入口文件 entry: './src/main.js', // 出口文件 output: { // 出口文件绝对路径 path: path.resolve(__dirname, './dist'), // 打包后的文件名字 filename: 'bundle.js', // 打包时动态修改文件加载地址 publicPath: 'dist/' }, module: { rules: [ { test: /\.css$/i, // css-loader 只负责将css文件加载 // style-loader 负责将样式添加到dom中 // 这里配置顺序需要注意 是从后向前加载的 use: ['style-loader', 'css-loader'], }, { test: /\.less$/, use: [ { loader: "style-loader" // creates style nodes from JS strings }, { loader: "css-loader" // translates CSS into CommonJS }, { loader: "less-loader" // compiles Less to CSS } ] }, { test: /\.(png|jpg|gif|jpeg)$/, use: [ { loader: 'url-loader', options: { // 当加载图片时 文件大小 小于limit时 会将图片编译成base64字符串形式 // 当加载图片时 文件大小 大于limit时 需要使用file-loader模块进行加载 limit: 9999, // 打包后文件的命名规则 // [name] 文件打包前的名字 // [hash:8] 截取8位hash值 // [ext] 扩展名 name: 'img/[name].[hash:8].[ext]' }, } ] }, { test: /\.js$/, // exclude 转换的时候排除的内容 exclude: /(node_modules|bower_components)/, use: { loader: 'babel-loader', options: { presets: ['es2015'] } } }, { test: /\.vue$/, // vueloader use: ['vue-loader'] } ], }, resolve: { alias: { // 指定 在其他地方导入vue的时候 vue来自哪里 // 在node_modules/vue/dist/ 中 默认是 vue.runtime.esm.js 修改为 vue.esm.js 'vue$': 'vue/dist/vue.esm.js' } } };
file:main.js // 依赖js文件 import {name, age} from "./js/demo"; console.log(name); console.log(age); console.log('webpack package test!!!!!!!!1'); // 依赖css文件 require("./css/narmal.css"); // 依赖less文件 require("./css/special.less") document.write("<h1>前端谢广坤!</h1>") // 使用vue进行开发 // 导入vue import Vue from 'vue' // 依赖vue组件 .vue文件 import App from './vue/App.vue' const vm = new Vue({ el: "#app", template: "<App/>", components: { App }, methods: {} });
file: index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <div id="app"> </div> <script src="./dist/bundle.js"></script> </body> </html>
file: App.vue <template> <div> <h2>my name is cpn </h2> <button @click="butClick">按钮</button> <h2>{{name}}</h2> <Cpn></Cpn> </div> </template> <script> import Cpn from './Cpn.vue' export default { name: "App", components: { Cpn }, data() { return { message: 'Hello word!', name: 'coder why' } } } </script> <style scoped> </style>
file:Cpn.vue <template> <h1>大写的Cpn</h1> </template> <script> export default { name: "Cpn" } </script> <style scoped> </style>
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
【阿里云新品发布·周刊】第34期:云数据库ClickHouse 免费试用
点击订阅新品发布会! 新产品、新版本、新技术、新功能、价格调整,评论在下方,下期更新!关注更多新品发布会 促销优惠 云数据库ClickHouse 免费试用 云数据库 ClickHouse 提供开源列式数据库ClickHouse的云上托管服务,内核完全兼容社区版本。 阿里云提供了一套企业级数据库管理平台,增强了数据安全能力,并增加了集群动态扩容、监控运维等多个企业级功能。阿里云同时实现了与云上其他数据产品数据互通,方便用户快速地构建云上海量数据分析平台。 ClickHouse有非常优异的查询性能,非常适合海量数据在线查询分析场景。 产品动态 新版本 : 云数据库 PostgreSQL 版 - RDS PG发布PG 12基础版 查看产品 产品文档 适合客户:PG 12的分析能力大幅增强,适合oltp在线事务处理与olap在线分析业务混合场景。基础版的存储为云盘三副本,数据可靠性较高,同时没有从节点使得其成本较低,性价比很高。特别适合对可用性要求较低可靠性要求很高对业务,例如偏分析的业务。 规格功能:PG 12 基础版。支持ssd, essd pl1, pl2, pl3存储。最高32TB, ...
- 下一篇
Go 开发关键技术指南 | Go 面向失败编程 (内含超全知识大图)
作者 |杨成立(忘篱) 阿里巴巴高级技术专家 关注“阿里巴巴云原生”公众号,回复 Go 即可查看清晰知识大图! 导读:从问题本身出发,不局限于 Go 语言,探讨服务器中常常遇到的问题,最后回到 Go 如何解决这些问题,为大家提供 Go 开发的关键技术指南。我们将以系列文章的形式推出《Go 开发的关键技术指南》,共有 4 篇文章,本文为第 2 篇。 Could Not Recover 在 C/C++ 中, 最苦恼的莫过于上线后发现有野指针或内存越界,导致不可能崩溃的地方崩溃; 最无语的是因为很早写的日志打印,比如 %s 把整数当字符串,突然某天执行到了崩溃; 最无奈的是无论因为什么崩溃都导致服务的所有用户受到影响。 如果能有一种方案,将指针和内存都管理起来,避免用户错误访问和释放,这样虽然浪费了一部分的 CPU,但是可以在快速变化的业务中避免这些
相关文章
文章评论
共有0条评论来说两句吧...