client.js:
成都創(chuàng)新互聯(lián)公司專注于潛江網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供潛江營(yíng)銷型網(wǎng)站建設(shè),潛江網(wǎng)站制作、潛江網(wǎng)頁(yè)設(shè)計(jì)、潛江網(wǎng)站官網(wǎng)定制、小程序定制開(kāi)發(fā)服務(wù),打造潛江網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供潛江網(wǎng)站排名全網(wǎng)營(yíng)銷落地服務(wù)。
vue項(xiàng)目將自動(dòng)完成 build 壓縮 上傳到遠(yuǎn)程服務(wù)器,并自動(dòng)備份上一個(gè)版本到bak文件夾;
【W(wǎng)eb前端基礎(chǔ)】webpack打包原理是什么?1、概念
本質(zhì)上,webpack 基于node平臺(tái),利用 node 的各種api來(lái)實(shí)現(xiàn) javascript 應(yīng)用程序的一個(gè)靜態(tài)模塊的打包工具。
在打包過(guò)程中,構(gòu)建依賴關(guān)系,并且實(shí)現(xiàn)模塊引用預(yù)處理,以及緩存等。
2、分析
1、人口文件
// mian.js
const a = require('./m1')
const b= require('./m2')
import { test } from './m1'
console.log(test)
//m2.js
export default {
b:2
}
//m1.js
export const test = {test:1}
export default {
a:1
}
2、生產(chǎn)的文件
(function (modules) {
var installedModules = {}; //緩存
/*
* 加載模塊函數(shù)
* 傳入模塊id
* */
function __webpack_require__(moduleId) {
// 檢查緩存中是否有模塊
if (installedModules[moduleId]) {
return installedModules[moduleId].exports;
}
// 創(chuàng)建一個(gè)新模塊,并緩存起來(lái)
var module = installedModules[moduleId] = {
i: moduleId,
l: false,
exports: {}
};
// 調(diào)模塊的函數(shù),modules
modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
module.l = true;
// 返回對(duì)應(yīng)模塊
return module.exports;
}
__webpack_require__.m = modules;
__webpack_require__.c = installedModules;
__webpack_require__.d = function (exports, name, getter) {
if (!__webpack_require__.o(exports, name)) {
Object.defineProperty(exports, name, {
configurable: false,
enumerable: true,
get: getter
});
}
};
__webpack_require__.n = function (module) {
var getter = module module.__esModule ?
function getDefault() {
return module['default'];
} :
function getModuleExports() {
return module;
};
__webpack_require__.d(getter, 'a', getter);
return getter;
};
__webpack_require__.o = function (object, property) {
return Object.prototype.hasOwnProperty.call(object, property);
};
__webpack_require__.p = "";
// 加載入口文件
return __webpack_require__(__webpack_require__.s = 0);
})
([
(function (module, exports, __webpack_require__) {
const a = __webpack_require__(1)
const b = __webpack_require__(2)
}),
(function (module, __webpack_exports__, __webpack_require__) {
"use strict";
Object.defineProperty(__webpack_exports__, "__esModule", {value: true});
__webpack_exports__["default"] = ({
a: 1
});
}),
(function (module, __webpack_exports__, __webpack_require__) {
"use strict";
Object.defineProperty(__webpack_exports__, "__esModule", {value: true});
__webpack_exports__["default"] = ({
b: 2
});
})
]);
觀察以上代碼得到結(jié)果:
1、打包后的代碼是一個(gè)立即執(zhí)行函數(shù),且傳入的參數(shù)為一個(gè)數(shù)組
2、參數(shù)數(shù)組就是我們引用的模塊
3、每一個(gè)模塊對(duì)應(yīng)著數(shù)組的位置就是那么的id
4、在立即函數(shù)中加載入口文件,并執(zhí)行
__webpack_require__ : 加載并執(zhí)行某一個(gè)模塊并將模塊緩存在 installedModules 中。
modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
這里是執(zhí)行引用的某一個(gè)模塊。
并將module,exports,require 加入模塊中。
這也是為什么我們?cè)谀K中有全局變量 module/exports/require
通過(guò)對(duì)打包后的文件分析,基本可以完全理解打包過(guò)程。
可以用,不是掛。
autojs是一個(gè)支持無(wú)障礙服務(wù)的Android平臺(tái)上的JavaScriptIDE,可以編寫(xiě)各種自動(dòng)化腳本,還有結(jié)合Tasker,自動(dòng)布局分析,生成簡(jiǎn)單代碼等功能。
它主要優(yōu)點(diǎn)有,無(wú)需root基于無(wú)障礙服務(wù),基于控件以坐標(biāo)為基礎(chǔ)的按鍵精靈,腳本精靈很容易出現(xiàn)分辨率問(wèn)題,而以控件為基礎(chǔ)的Autojs則沒(méi)有這個(gè)問(wèn)題,上手簡(jiǎn)單使用javascript編寫(xiě)支持中文變量名,可打包可以將JavaScript打包為apk文件,這一點(diǎn)可以簡(jiǎn)化用戶操作,對(duì)上了年紀(jì)的用戶很重要。
8個(gè)。js的全稱叫JavaScript,是最流行的編程語(yǔ)言。根據(jù)查詢相關(guān)資料顯示,該語(yǔ)言打包數(shù)量是8個(gè)包,是所有頁(yè)面都會(huì)加載的公共文件。js是一種具有函數(shù)優(yōu)先的輕量級(jí),解釋型或即時(shí)編譯型的高級(jí)編程語(yǔ)言。