webpack 4.0搭建vue框架,入门学习
俗话说一天不可以不学,今天就来学习一下,鼎鼎大名的webpackwebpack的配置真的是让人发指的地步从这个坑中进入到另一个坑中,本篇文章可能有点长,请耐心看完众所周知,webpack是依附于node.js 的,所以在使用webpack之前需要先下载一个node,node中文网点击打开链接安装完node之后,接下来就是...
俗话说一天不可以不学,今天就来学习一下,鼎鼎大名的webpack
webpack的配置真的是让人发指的地步
从这个坑中进入到另一个坑中,本篇文章可能有点长,请耐心看完
众所周知,webpack是依附于node.js 的,所以在使用webpack之前需要先下载一个node,
node中文网 点击打开链接
安装完node之后,接下来就是今天的主角
1 安装webpack
打开命令窗口 执行
npm install webpack webpack-cli webpack-dev-server -g
这里建议大家使用cnpm
cnpm install webpack webpack-cli webpack-dev-server -g
2 安装完成之后,你就可以小试一把
创建文件结构如下
src
index.js
dist
index.html
结构完成之后,在根目录下打开命令窗口,
webpack4 提供了两个直接打包的方式分别是
webpack --mode=development //用于开发环境 -》压缩出来的较大
webpack --mode=production //用于生产环境 -》压缩出来的较小
执行完成之后,在dist文件夹中可以看到压缩过后的js
3 使用 webpack.div.js
上面的部分只是给咱们提供了一些简单的压缩js方式
在实际的开发中,我们需要压缩css,html,lee等文件还是需要loader的配合,所以还是需要用到webpack.div.js
下面开始webpack.div.js的配置,以及踩坑过程
一、先写出文件结构
config
webpack.div.js
dist
index.html
src
main.js
二、配置压缩js的结构
webpack.div.js
var path = require('path') //node系统模块
module.exports = {
entry: {
main: './src/main.js'//入口文件
},
mode: 'development',// 压缩模式
output: { //输出配置
filename: '[name].js', //输出名字配置【name】为原来的名字
path: path.resolve(__dirname, '../dist') //输出的路径
}
},
module: {
rules:[
//用来加载loader【loader是用来打包其他文件格式的】
]
}
}
三 loader配置
css
需要下载两个loader
npm i css-loader style-loader
在main中引入css
require(./name.css) //一定加入./否则会报错
loader配置
module: {
rules: [{
test: /\.css$/,
use: [
{
loader: "style-loader"
},
{
loader: "css-loader"
}
]
}]
}
需要注意css 在HTML中的引入,需要output配合
output: {
filename: '[name].js',
path: path.resolve(__dirname, '../dist'),
publicPath: '/'
},
在HTML中写入<script src="/main.js"></script>建议写到html下面引入
HTML
需要下载三个loader
npm i file-loader html-loader extract-loader
文件结构
config
webpack.dev.js
dist
src
index.html
main.css
main.js
config/webpack.dev.js
var path = require('path') //node系统模块
module.exports = { //暴露
entry: { //入口文件
main: './src/main.js'
},
mode: 'development', //开发模式 可使用production生产模式进行替换
output: { //输出
filename: '[name].js', //输出时文件名
path: path.resolve(__dirname, '../dist'), //commonJs提供 文件名 -》输出路径
publicPath: '/' // html中的引入文件路径
},
devServer: { //热跟新
contentBase: 'dist', //服务器指向文件名。类似node中的静态资源加载
overlay:true //报错显示到浏览器
},
module: { //loader配置
rules: [{
test: /\.css$/, // 正则css
use: [{
loader: "style-loader" //渲染
},
{
loader: "css-loader" //压缩
}
]
},
{
test: /\.html$/, //正则 所有的html
use: [{
loader: "file-loader", //文件输出
options: { //名字
name: "[name].html"
}
},
{
loader: "extract-loader" //与main.js分离,打包成一个独立的文件
},
{
loader: "html-loader", //渲染,压缩
options: {
attrs: ["img:src"]
}
}
]
}
}
src/index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<div id="box">
</div>
</body>
<script src="/main.js"></script>
</html>
main/main.js代码
requrie('./main.css')
requrie('./html.css')
三,图片
html中正常引入
在loader配置中加入
{
test: /\.(jpg|git|png)$/, //图片
use: [{
loader: "file-loader",
options: {
name: "[name]-[hash:8].[ext]" //压缩为一个名字8位哈希值的图片
}
}]
}
-----------------------------------------------------------------------------------------------------------
以上属性webpack的基本操作,下面使用webpack实现vue开发环境的搭建
文件结构
config
webpack.dev.js
dist
index.html
ser
main.js
app.vue
config/webpack.dev.js
var path = require('path') //node系统模块
const VueLoaderPlugin = require('vue-loader/lib/plugin'); //vue-loader 伴生插件
module.exports = { //暴露
entry: { //入口文件
main: './src/main.js'
},
mode: 'development', //开发模式 可使用production生产模式进行替换
plugins: [
new VueLoaderPlugin() //vue-loader的VueLoaderPlugin
],
output: { //输出
filename: '[name].js', //输出时文件名
path: path.resolve(__dirname, '../dist'), //commonJs提供 文件名 -》输出路径
publicPath: '/' // html中的引入文件路径
},
devServer: { //热跟新
contentBase: 'dist', //服务器指向文件名。类似node中的静态资源加载
overlay:true //报错显示到浏览器
},
resolve: { //引入vue.js
alias: {
'vue$': 'vue/dist/vue.js'
}
},
module: { //loader配置
rules: [{
test: /\.css$/, // 正则css
use: [{
loader: "style-loader" //渲染
},
{
loader: "css-loader" //压缩
}
]
},
{
test: /\.html$/, //正则 所有的html
use: [{
loader: "file-loader", //文件输出
options: { //名字
name: "[name].html"
}
},
{
loader: "extract-loader" //与main.js分离,打包成一个独立的文件
},
{
loader: "html-loader", //渲染,压缩
options: {
attrs: ["img:src"]
}
}
]
},
{
test: /\.(jpg|git|png)$/, //图片
use: [{
loader: "file-loader",
options: {
name: "[name]-[hash:8].[ext]" //压缩为一个名字8位哈希值的图片
}
}]
},
{
test: /\.vue$/, //压缩vue
use: [{
loader: "vue-loader" //压缩vue的loader
}],
exclude: '/node_modules/' // 排除压缩的文件
}
]
}
}
dist/index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<div id="box">
<app></app>
</div>
</body>
<script src="/main.js"></script>
</html>
src/app.vue
<template>
<div>
我是{{a}}
</div>
</template>
<script>
export default {
name: 'app',
data:function(){
return {
a:'小渣渣'
}
}
}
</script>
<style>
</style>
ser/main.js
import Vue from 'vue'
import app from "./app.vue"
new Vue({
el:'#box',
components:{
app
}
}
)
github地址:https://github.com/wangchaogang/webpack-vue.git
更多推荐
所有评论(0)