源文章:最小知識-webpack加載js/ts的順序javascript
npm init
複製代碼
如下是完整的項目目錄:html
index.js 項目入口文件java
import * as a from './a'
複製代碼
a.jswebpack
import * as b from './b'
import * as d from './d'
console.log('file: a.js')
複製代碼
b.jsweb
import * as c from './c'
console.log('file: b.js')
複製代碼
c.jstypescript
console.log('file: c.js')
複製代碼
d.jsnpm
console.log('file: d.js')
複製代碼
index.htmljson
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>webapck</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<script src="./dist/index.js"></script>
</head>
<body>
</body>
</html>
複製代碼
修改package.json,以下。執行 npm i 安裝webpackbash
package.jsonapp
{
"name": "webpack",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"dev": "webpack --config webpack.config.js"
},
"author": "",
"license": "ISC",
"devDependencies": {
"webpack": "^4.39.3",
"webpack-cli": "^3.3.7"
}
}
複製代碼
webpack.config.js
const path = require('path');
module.exports = {
entry: './src/index.js',
output: {
filename: 'index.js',
path: path.resolve(__dirname, 'dist')
}
}
複製代碼
執行 npm run dev
執行完後,會在根目錄建立一個 dist 的文件夾,裏面含有一個最終打包好的js文件,在html裏直接引用這個js便可。
core文件夾下每一個js都有個_console,_它們打印的順序是?
js引用關係圖
webpack會從 webpack.config.js 配置entry的入口js文件開始讀起,從上到下按順序執行。webpack讀取js會先看有沒有import 。
若是有import,則按import的順序依次讀取導入的js。 若是沒有import,則繼續執行當前js代碼。 執行完當前js代碼,會回退到上個js繼續執行,直到回退到入口文件index.js 若是已經import過的js,則再也不重複導入
該項目具體執行順序
_ 修改 package.json,並執行 npm i 從新安裝
{
"name": "webpack",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"dev": "webpack --config webpack.config.js"
},
"author": "",
"license": "ISC",
"devDependencies": {
"ts-loader": "^6.0.4",
"typescript": "^3.6.2",
"webpack": "^4.39.3",
"webpack-cli": "^3.3.7"
}
}
複製代碼
const path = require('path');
module.exports = {
entry: './src/index.ts',
output: {
filename: 'index.js',
path: path.resolve(__dirname, 'dist')
},
module:{
rules: [
{
test: /\.tsx?$/,
use: 'ts-loader'
}
]
},
resolve: {
extensions:['.ts','.js']
}
}
複製代碼
把js文件後綴都改成ts,而後執行 npm run dev 編譯打包