两个插件:vue-loader vue-template-compiler
这次我们直接在图片来说明 看上面下载的插件,来使用
vue-loader 功能将 vue 文件中的三个模块,解析和转换 vue 主件,提供了其中的 script,样式 style,以及 template,在分别交给别的模块处理
下载的依赖:
script:babel-loader
css 样式:less-loader css-loader style-loader
template 的解析:vue-template-compiler
必须要引入的插件 vue
在配置 webpack.config.js 文件中,必须要引入插件 let VueLoaderPlugin=require('vue-loader/lib/plugin'); 在 plugins 中 new VueLoaderPlugin() 调用即可
在 new 实例的时候
注意:组件时候用自己的数据在自己模板中使用,组件挂在谁下面,就在谁的模板以标签的形式调用,
留心驼峰法命名 在标签使用中用 - 表示
npm 下载环境表示:
-S 生产依赖 -D 开发依赖
跟组件的灵魂:render:(fn)=>fn(App) // 这里的 App 代表定义最大的组件,可通过案例看到
案例:
目录结构
app.html
app.js
app.vue
header.vue
package.json
webpack.config.js
let path = require("path"); let Htmlwebpackplugin = require("html-webpack-plugin"); let compiler = require('vue-template-compiler'); let VueLoaderPlugin=require('vue-loader/lib/plugin'); module.exports = { entry: { app: "./src/app.js", main: "./src/main.js" }, output: { filename: "[name].js", path: path.resolve("dist") }, mode: "development", // porduction 压缩 development 未压缩 module: { rules: [{ test: /\.css$/i, use: [{ loader: "style-loader" }, { loader: "css-loader" } ], }, { test: /\.less$/, use: [{ loader: 'style-loader', }, { loader: 'css-loader', }, { loader: 'less-loader', }, ], }, { test: /\.vue$/, use: [ {loader:'vue-loader'} ] }, { test: /\.m?js$/, exclude: /(node_modules|bower_components)/, use: { loader: 'babel-loader', options: { presets: ['@babel/preset-env'] } } }, { test: /\.(png|jpe?g|gif)$/, use: [{ loader: 'file-loader', options: { name: 'img/[name].[ext]', }, }, ] } ], }, plugins: [ new VueLoaderPlugin(), new Htmlwebpackplugin({ filename: "app.html", // 编译后的 html 文件 template: "./app.html", // 编译前地 html 文件 // minify: { // collapseWhitespace: true // 将 html 文件压缩为一行 // }, chunks: ["app", "main"] // 依赖的 js 文件 与 entry 中的属性 保持一致 }) ], devServer: { open: true, // 自动打开浏览器 contentBase: "dist", // 配置根目录 port: 3000 // 端口 } }