前端路由&webpack基礎(chǔ)配置詳解
1. SPA
SPA是單頁面應(yīng)用程序(single page application),通俗來講就是在一個(gè)頁面開發(fā)一個(gè)完整網(wǎng)站的功能
優(yōu)點(diǎn):
- 不需要跳轉(zhuǎn)頁面,局部更新頁面內(nèi)容
- 前端組件化
缺點(diǎn):
- 首屏加載慢(第一次訪問慢,按需加載)
- 開發(fā)復(fù)雜(所有的功能都在一個(gè)頁面完成,可使用webpack模塊化開發(fā))
- 不利于SEO搜索引擎優(yōu)化(使用服務(wù)端渲染)
2. 前端路由:
- 根據(jù)不用的URL標(biāo)識(shí)符渲染不同的組件(不同的網(wǎng)頁內(nèi)容)
- 路由實(shí)現(xiàn)原理:
- hash哈希(錨點(diǎn)) 通過hashchange監(jiān)聽URL標(biāo)識(shí)符改變,顯示不同的內(nèi)容
<ul>
<li><a href="#login" rel="external nofollow" >魯班</a></li>
<li><a href="#home" rel="external nofollow" >提莫</a></li>
<li><a href="#list" rel="external nofollow" >劍姬</a></li>
</ul>
<div id="app"></div>
<script>
// 監(jiān)聽hash值的不用,讓頁面顯示不同的內(nèi)容
window.onhashchange = function() {
let app = document.getElementById('app');
// 獲取hash值
let hash = location.hash.substr(1);
// 根據(jù)標(biāo)識(shí)展現(xiàn)不同的內(nèi)容 局部更新
switch(hash) {
case 'login':
app.innerHTML = '托馬斯回旋...';
break;
case 'home':
app.innerHTML = '正在路上...';
break;
case 'list':
app.innerHTML = '華爾茲...';
break;
}
}
</script>
3. 前端模塊化
- CommonJS
- 模塊導(dǎo)出
- module.exports
- exports
- 模塊導(dǎo)入
- require()
- 模塊導(dǎo)出
- ES6 Module
- 模塊導(dǎo)出
- export
- 模塊導(dǎo)入
- import
- 模塊導(dǎo)出
4. webpack基礎(chǔ)配置
初始化項(xiàng)目
npm init -y
安裝依賴包
npm install webpack -D npm install webpack-cli -D
通過webpack命令打包文件: 模塊化轉(zhuǎn)換,代碼壓縮合并
webpack.config.js
const path = require('path');
// 下包并導(dǎo)入插件 npm i html-webpack-plugin -D
const HtmlWebpackPlugin = require('html-webpack-plugin');
// npm i clean-webpack-plugin -D 清除目錄中的內(nèi)容
const { CleanWebpackPlugin } = require('clean-webpack-plugin');
module.exports = {
// 配置打包選項(xiàng) development開發(fā)環(huán)境
mode: 'development', // production 生產(chǎn)環(huán)境
// 指定入口文件:要打包的文件
entry: './src/js/index.js',
// 指定輸出文件:打包之后的文件
output: {
path: path.resolve(__dirname, 'dist'),
filename: 'main.min.js'
},
// 配置資源的加載器 loader
module: {
rules: [
// 配置js的加載器(把ES6轉(zhuǎn)化為ES3/5代碼)
{
test: /\.jsx?$/,
loader: 'babel-loader',
//打包除這個(gè)文件之外的文件
exclude: path.join(__dirname, './node_modules'),
//打包包括的文件
include: path.join(__dirname, './src')
},
// 配置css的加載器
{
// 匹配.css結(jié)尾的文件
test: /\.css$/,
// 配置css文件的加載器,處理順序:從右向左
use: ['style-loader', 'css-loader']
},
// 配置less的加載器
{
test: /\.less$/,
use: ['style-loader', 'css-loader', 'less-loader']
}
]
},
// 配置插件
plugins: [
new CleanWebpackPlugin(),
// 動(dòng)態(tài)生成html
new HtmlWebpackPlugin({
title: '測試標(biāo)題',
template: 'index.html'
})
],
// 配置實(shí)時(shí)預(yù)覽環(huán)境
devServer: {
contentBase: path.join(__dirname, 'dist'),
port: 5000
}
}
package.json文件配置
"scripts": {
"dev": "npx webpack-dev-server --open"
}
5 .判斷如何配置webpack
- 指定源文件加入到構(gòu)建流程中被webpack控制, 配置entry
- 指定輸出文件的位置和名稱,配置output
- 自定義解析和轉(zhuǎn)換文件,配置module,通常是配置module.rules里的 Loader。(資源加載器)
- 配置插件通過plugins進(jìn)行配置
- 尋找依賴模塊時(shí),配置resolve
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Javascript highcharts 餅圖顯示數(shù)量和百分比實(shí)例代碼
這篇文章主要介紹了Javascript highcharts 餅圖顯示數(shù)量和百分比實(shí)例代碼的相關(guān)資料,這里附有實(shí)例代碼,需要的朋友可以參考下2016-12-12
TextArea設(shè)置MaxLength屬性最大輸入值的js代碼
TextArea中限制最大輸入長度,實(shí)現(xiàn)的方法種種,我們不在一一介紹,今天本文推薦一種簡單實(shí)用的方法,需要的朋友可以參考下2012-12-12
淺談JavaScript變量的自動(dòng)轉(zhuǎn)換和語句
下面小編就為大家?guī)硪黄獪\談JavaScript變量的自動(dòng)轉(zhuǎn)換和語句。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-06-06
JavaScript數(shù)據(jù)結(jié)構(gòu)之優(yōu)先隊(duì)列與循環(huán)隊(duì)列實(shí)例詳解
這篇文章主要介紹了JavaScript數(shù)據(jù)結(jié)構(gòu)之優(yōu)先隊(duì)列與循環(huán)隊(duì)列,結(jié)合實(shí)例形式較為詳細(xì)的分析了javascrip數(shù)據(jù)結(jié)構(gòu)中優(yōu)先隊(duì)列與循環(huán)隊(duì)列的原理、定義與使用方法,需要的朋友可以參考下2017-10-10
javascript實(shí)現(xiàn)下班倒計(jì)時(shí)效果的方法(可桌面通知)
這篇文章主要介紹了javascript實(shí)現(xiàn)下班倒計(jì)時(shí)效果的方法,涉及javascript倒計(jì)時(shí)效果及桌面提示效果的實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值2015-07-07
學(xué)習(xí)JavaScript設(shè)計(jì)模式(單例模式)
這篇文章主要帶領(lǐng)大家學(xué)習(xí)JavaScript設(shè)計(jì)模式,其中重點(diǎn)介紹單例模式,舉例說明單例模式的技術(shù)、弊端等,對(duì)單例模式進(jìn)行詳細(xì)剖析,感興趣的小伙伴們可以參考一下2015-11-11
JS實(shí)現(xiàn)隨機(jī)生成字符串(可指定長度)的示例代碼
本文主要介紹了JS實(shí)現(xiàn)隨機(jī)生成字符串(可指定長度)的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-08-08
淺談laytpl 模板空值顯示null的解決方法及簡單的js表達(dá)式
今天小編就為大家分享一篇淺談laytpl 模板空值顯示null的解決方法及簡單的js表達(dá)式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-09-09

