let obj=new Object();
obj.proto=Person.prototype
-将构造函数的this指向新对象
Person.call(obj)
结构层(structural layer)
由HTML或XHTML之类的标记语言负责创建。表示层(resentation layer)
由CSS负责创建。行为层(behavior layer)
由JavaScript语言和DOM创建。那么在以下情况中,请使用 post请求:
1、无法使用缓存文件(更新服务器上的文件或数据库)
2、向服务器发送大量数据(post没有数据量限制)
3、发送包含未知字符的用户输入时,post比 get更稳定也更可靠
<script>
// 第一个参数:this指向
// 如果要传参,后面依次是参数
function fn(x, y) {
console.log(this);
}
var obj = {
name: "张三"
}
fn(1, 2); // 改变指向前
fn.call(obj, 1, 2); // 改变指向后,this指向obj
</script>
<script>
// 第一个参数:this指向
// 如果要传参,后面依次是参数
function fn(x, y) {
console.log(this); // 改变this指向之前this指向Window 改变后指向obj对象
}
var obj = {
name: "张三"
}
fn(1, 2); // 改变指向前
fn.call(obj, [1, 2]); // 改变指向后
<script>
// 第一个参数:this指向
// 如果要传参,后面依次是参数
function fn(x, y) {
console.log(this); // 改变this指向之前this指向Window 改变后指向obj对象
}
var obj = {
name: "张三"
}
fn(1, 2); // 改变指向前
fn.bind(obj, 1, 2)(); // 自调用之后,this指向obj
</script>
<script>
let button = document.getElementById('an')
button.addEventListener('click', function () {
let _this = this
setTimeout(function () {
console.log('保存到定时器外的this指向', _this); // _this指向button 按钮
console.log('定时器中的this指向', this); // this 指向window
}, 1000)
})
</script>
安装指令:
yarn add -D terser-webpack-plugin 或 npm install terser-webpack-plugin -save -dev
在项目中引入和使用:
const Webpack = require('webpack')
// 引入该插件
const CompressionWebpackPlugin = require('compression-webpack-plugin')
// 引入压缩插件
const TerserPlugin = require('terser-webpack-plugin')
// 匹配此 {RegExp} 的资源
const productionGzipExtensions = /\.(js|css|json|ttf)(\?.*)?$/i
module.exports = {
transpileDependencies: ['vuetify'],
assetsDir: 'assets', // 静态资源目录(js,css,img,fonts)这些文件都可以写里面
productionSourceMap: false,
configureWebpack: {
plugins: [
new CompressionWebpackPlugin({
filename: '[path][name].gz[query]',
algorithm: 'gzip',
test: productionGzipExtensions,
threshold: 0,
minRatio: 0.8,
}),
new Webpack.IgnorePlugin(/^\.\/locale$/, /moment$/),
],
optimization: {
minimizer: [
new TerserPlugin({
terserOptions: {
ecma: undefined,
warnings: false,
parse: {},
compress: {
drop_console: true,
drop_debugger: false,
pure_funcs: ['console.log'], // 移除console
},
},
}),
],
},
},
}
安装命令:
yarn add -D compression-webpack-plugin 或 npm install compression-webpack-plugin -save -dev
在项目中引入和使用:
const CompressionWebpackPlugin = require("compression-webpack-plugin"); // 开启gzip压缩, 按需引用
plugins.push(
new CompressionWebpackPlugin({
filename: '[path].gz[query]',
algorithm: 'gzip',
test: productionGzipExtensions,
threshold: 10240,//大于10k的进行压缩
minRatio: 0.8,
})
);
安装命令:
yarn add --dev html-webpack-plugin 或 npm i --save-dev html-webpack-plugin
在项目中引用:
const { resolve } = require('path')//nodejs 方法
const HtmlWebpackPlugin = require('html-webpack-plugin')
export.moduls= {
entry: {
one: ['./src/index1.js', './src/index2.js'],
two:'./src/indexTwo.js'
},
mode: 'development',
output: {
filename: '[name].js',
path: resole(_dirname, 'build')
},
module: {
rules: []
},
plugins: [
//默认:创建空的html 自动引入打包的资源(js css)
// template 自定义设置入口html filename 自定义文件名
new HtmlWebpackPlugin({
template: './src/index.html',
filename: 'index.html',
minify: {
collapseWhitespace: true, //html打包去除空格
removeComments: true // 移除注释
},
chunks:['one'], //指定引用的js
})
]
}
安装命令:
yarn add -D purgecss-webpack-plugin 或 npm install purgecss-webpack-plugin -save -dev
在项目中引用:
//用于生产环境去除多余的css
const PurgecssPlugin = require("purgecss-webpack-plugin")
//去掉不用的css 多余的css
plugins.push(
new PurgecssPlugin({
paths: glob.sync([path.join(__dirname, "./**/*.vue")]),
extractors: [
{
extractor: class Extractor {
static extract(content) {
const validSection = content.replace(
/