1. 使用require引入其他模块或者包
2. 使用exports或者module.exports导出模块成员
3. 一个文件就是一个模块,都拥有独立的作用域
1. 每一个js文件都是独立的模块
2. 导入模块成员使用import关键字
3. 暴露模块成员使用export关键字
总结:
const presets = [
["@babel/env",{
targets:{
edge:"17",
firefox:"60",
chrome:"67",
safari:"11.1"
}
}]
]
//暴露
module.exports = { presets }
console.log("ok");
export default {
成员A,
成员B,
},如下:
let num = 100;
export default{
num
}
####B.默认导入
import 接收名称 from “模块标识符”,如下:
import test from “./test.js”
模块化支持
,代码压缩混淆
,解决js兼容
问题,性能优化等特性,提高了开发效率和项目的可维护性创建项目,并打开项目所在目录的终端,输入命令:
npm init -y
module.exports = {
mode:"development"//可以设置为development(开发模式),production(发布模式)
}
不会进行压缩和混淆
,打包速度会快一些"scripts":{
"dev":"webpack"
}
npm run dev
src/index.js
作为默认的打包入口js文件const path = require("path");
module.exports = {
mode:"development",
//设置入口文件路径
entry: path.join(__dirname,"./src/xx.js"),
//设置出口文件
output:{
//设置路径
path:path.join(__dirname,"./dist"),
//设置文件名
filename:"res.js"
}
}
A.安装自动打包功能的包:webpack-dev-server
npm install webpack-dev-server -D
B.修改package.json中的dev指令如下:
"scripts":{
"dev":"webpack-dev-server"
}
C.将引入的js文件路径更改为:<script src="/bundle.js"></script>
D.运行npm run dev,进行打包
E.打开网址查看效果:http://localhost:8080
"dev": "webpack-dev-server --open --host 127.0.0.1 --port 9999"
安装默认预览功能的包:html-webpack-plugin
npm install html-webpack-plugin -D
修改webpack.config.js文件,如下:
//导入包
const HtmlWebpackPlugin = require("html-webpack-plugin");
//创建对象
const htmlPlugin = new HtmlWebpackPlugin({
//设置生成预览页面的模板文件
template:"./src/index.html",
//设置生成的预览页面名称
filename:"index.html"
})
继续修改webpack.config.js文件,添加plugins信息:
module.exports = {
......
plugins:[ htmlPlugin ]
}
loader加载器包含:
1.less-loader
2.sass-loader
3.url-loader:打包处理css中与url路径有关的文件
4.babel-loader:处理高级js语法的加载器
5.postcss-loader
6.css-loader,style-loader
npm install style-loader css-loader -D
module.exports = {
......
plugins:[ htmlPlugin ],
module : {
rules:[
{
//test设置需要匹配的文件类型,支持正则
test:/\.css$/,
//use表示该文件类型需要调用的loader
use:['style-loader','css-loader']
}
]
}
}
npm install less-loader less -D
module.exports = {
......
plugins:[ htmlPlugin ],
module : {
rules:[
{
//test设置需要匹配的文件类型,支持正则
test:/\.css$/,
//use表示该文件类型需要调用的loader
use:['style-loader','css-loader']
},
{
test:/\.less$/,
use:['style-loader','css-loader','less-loader']
}
]
}
}
module.exports = {
......
plugins:[ htmlPlugin ],
module : {
rules:[
{
//test设置需要匹配的文件类型,支持正则
test:/\.css$/,
//use表示该文件类型需要调用的loader
use:['style-loader','css-loader']
},
{
test:/\.less$/,
use:['style-loader','css-loader','less-loader']
},
{
test:/\.scss$/,
use:['style-loader','css-loader','sass-loader']
}
]
}
}
post-css
自动添加css的兼容性前缀(-ie-,-webkit-)npm install postcss-loader autoprefixer -D
const autoprefixer = require("autoprefixer");
module.exports = {
plugins:[ autoprefixer ]
}
module.exports = {
......
plugins:[ htmlPlugin ],
module : {
rules:[
{
//test设置需要匹配的文件类型,支持正则
test:/\.css$/,
//use表示该文件类型需要调用的loader
use:['style-loader','css-loader','postcss-loader']
},
{
test:/\.less$/,
use:['style-loader','css-loader','less-loader']
},
{
test:/\.scss$/,
use:['style-loader','css-loader','sass-loader']
}
]
}
}
module.exports = {
......
plugins:[ htmlPlugin ],
module : {
rules:[
{
//test设置需要匹配的文件类型,支持正则
test:/\.css$/,
//use表示该文件类型需要调用的loader
use:['style-loader','css-loader']
},
{
test:/\.less$/,
use:['style-loader','css-loader','less-loader']
},
{
test:/\.scss$/,
use:['style-loader','css-loader','sass-loader']
},{
test:/\.jpg|png|gif|bmp|ttf|eot|svg|woff|woff2$/,
//limit用来设置字节数,只有小于limit值的图片,才会转换
//为base64图片
use:"url-loader?limit=16940"
}
]
}
}
module.exports = {
presets:["@babel/preset-env"],
plugins:[ "@babel/plugin-transform-runtime", "@babel/plugin-proposal-class-properties" ]
}
module.exports = {
......
plugins:[ htmlPlugin ],
module : {
rules:[
{
//test设置需要匹配的文件类型,支持正则
test:/\.css$/,
//use表示该文件类型需要调用的loader
use:['style-loader','css-loader']
},
{
test:/\.less$/,
use:['style-loader','css-loader','less-loader']
},
{
test:/\.scss$/,
use:['style-loader','css-loader','sass-loader']
},{
test:/\.jpg|png|gif|bmp|ttf|eot|svg|woff|woff2$/,
//limit用来设置字节数,只有小于limit值的图片,才会转换
//为base64图片
use:"url-loader?limit=16940"
},{
test:/\.js$/,
use:"babel-loader",
//exclude为排除项,意思是不要处理node_modules中的js文件
exclude:/node_modules/
}
]
}
}
解决方案:
1.template组件组成的模板区域
2.script组成的业务逻辑区域
3.style样式区域
<template>
组件代码区域
</template>
<script>
js代码区域
</script>
<style scoped>
样式代码区域
</style>
配置.vue文件的加载器
npm install vue-loader vue-template-compiler -D
const VueLoaderPlugin = require("vue-loader/lib/plugin");
const vuePlugin = new VueLoaderPlugin();
module.exports = {
......
plugins:[ htmlPlugin, vuePlugin ],
module : {
rules:[
...//其他规则
{
test:/\.vue$/,
loader:"vue-loader",
}
]
}
}
npm install vue -S
import Vue from "vue"
const vm = new Vue({
el:"#first",
render:h=>h(app)
})
"scripts":{
"dev":"webpack-dev-server",
"build":"webpack -p"
}
Vue脚手架可以快速生成Vue项目基础的架构。
npm install -g @vue/cli
1. 使用命令创建Vue项目
`vue create my-project`
2.选择Manually select features(选择特性以创建项目)
3.勾选特性可以用空格进行勾选。
4.是否选用历史模式的路由:n
5.ESLint选择:ESLint + Standard config
6.何时进行ESLint语法校验:Lint on save
7.babel,postcss等配置文件如何放置:In dedicated
config files(单独使用文件进行配置)
是否保存为模板:n
使用哪个工具安装包:npm
2).基于ui界面创建Vue项目
命令:vue ui
在自动打开的创建项目网页中配置项目信息。
3).基于2.x的旧模板,创建Vue项目
npm install -g @vue/cli-init
vue init webpack my-project
"vue":{
"devServer":{
"port":"9990",
"open":true
}
}
module.exports = {
devServer:{
port:8888,
open:true
}
}
因篇幅问题不能全部显示,请点此查看更多更全内容