前端路由&webpack基础配置详解


Posted in Javascript onJune 10, 2019

1. SPA

SPA是单页面应用程序(single page application),通俗来讲就是在一个页面开发一个完整网站的功能

优点:

  • 不需要跳转页面,局部更新页面内容
  • 前端组件化

缺点:

  • 首屏加载慢(第一次访问慢,按需加载)
  • 开发复杂(所有的功能都在一个页面完成,可使用webpack模块化开发)
  • 不利于SEO搜索引擎优化(使用服务端渲染)

2. 前端路由:

  • 根据不用的URL标识符渲染不同的组件(不同的网页内容)
  • 路由实现原理:
    • hash哈希(锚点) 通过hashchange监听URL标识符改变,显示不同的内容
<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>
// 监听hash值的不用,让页面显示不同的内容
window.onhashchange = function() {
  let app = document.getElementById('app');
  // 获取hash值
  let hash = location.hash.substr(1);
  // 根据标识展现不同的内容 局部更新
  switch(hash) {
    case 'login':
      app.innerHTML = '托马斯回旋...';  
      break;
    case 'home':
      app.innerHTML = '正在路上...';
      break;
    case 'list':
      app.innerHTML = '华尔兹...';
      break;
    }
  }
</script>

3. 前端模块化

  • CommonJS
    • 模块导出
      • module.exports
      • exports
    • 模块导入
      • require()
  • ES6 Module
    • 模块导出
      • export
    • 模块导入
      • import

4. webpack基础配置

初始化项目

npm init -y

安装依赖包

npm install webpack -D

npm install webpack-cli -D

通过webpack命令打包文件: 模块化转换,代码压缩合并

webpack.config.js

const path = require('path');
// 下包并导入插件 npm i html-webpack-plugin -D
const HtmlWebpackPlugin = require('html-webpack-plugin');
// npm i clean-webpack-plugin -D 清除目录中的内容
const { CleanWebpackPlugin } = require('clean-webpack-plugin');

module.exports = {
// 配置打包选项 development开发环境
mode: 'development', // production 生产环境
// 指定入口文件:要打包的文件
entry: './src/js/index.js',
// 指定输出文件:打包之后的文件
output: {
  path: path.resolve(__dirname, 'dist'),
  filename: 'main.min.js'
},
// 配置资源的加载器 loader
module: {
  rules: [
  // 配置js的加载器(把ES6转化为ES3/5代码)
  {
    test: /\.jsx?$/,
    loader: 'babel-loader',
    //打包除这个文件之外的文件
    exclude: path.join(__dirname, './node_modules'),
    //打包包括的文件
    include: path.join(__dirname, './src')
  },
  // 配置css的加载器
  {
    // 匹配.css结尾的文件
    test: /\.css$/,
    // 配置css文件的加载器,处理顺序:从右向左
    use: ['style-loader', 'css-loader']
  },
  // 配置less的加载器
  {
    test: /\.less$/,
    use: ['style-loader', 'css-loader', 'less-loader']
  }
  ]
},
// 配置插件
plugins: [
  new CleanWebpackPlugin(),
  // 动态生成html
  new HtmlWebpackPlugin({
  title: '测试标题',
  template: 'index.html'
  })
],
// 配置实时预览环境 
devServer: {
  contentBase: path.join(__dirname, 'dist'),
  port: 5000
}
}

package.json文件配置

"scripts": {
  "dev": "npx webpack-dev-server --open"
}

5 .判断如何配置webpack

  • 指定源文件加入到构建流程中被webpack控制, 配置entry
  • 指定输出文件的位置和名称,配置output
  • 自定义解析和转换文件,配置module,通常是配置module.rules里的 Loader。(资源加载器)
  • 配置插件通过plugins进行配置
  • 寻找依赖模块时,配置resolve

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Javascript 刷新全集常用代码
Nov 22 Javascript
Jquery下判断Id是否存在的代码
Jan 06 Javascript
使用js显示当前时间示例
Mar 02 Javascript
javascript解析json实例详解
Nov 05 Javascript
在localStorage中存储对象数组并读取的方法
Sep 24 Javascript
JavaScript实现解析INI文件内容的方法
Nov 17 Javascript
JS简单实现数组去重的方法分析
Oct 14 Javascript
javascript实现文件拖拽事件
Mar 29 Javascript
对angularjs框架下controller间的传值方法详解
Oct 08 Javascript
jquery实现商品sku多属性选择功能(商品详情页)
Dec 20 jQuery
vue下axios拦截器token刷新机制的实例代码
Jan 17 Javascript
Ant design vue table 单击行选中 勾选checkbox教程
Oct 24 Javascript
在Vue中用canvas实现二维码和图片合成海报的方法
Jun 10 #Javascript
vue中使用 pako.js 解密 gzip加密字符串的方法
Jun 10 #Javascript
移动端 Vue+Vant 的Uploader 实现上传、压缩、旋转图片功能
Jun 10 #Javascript
利用百度echarts实现图表功能简单入门示例【附源码下载】
Jun 10 #Javascript
jquery操作checkbox的常用方法总结【附测试源码下载】
Jun 10 #jQuery
利用Electron简单撸一个Markdown编辑器的方法
Jun 10 #Javascript
js实现类似iphone的网页滑屏解锁功能示例【附源码下载】
Jun 10 #Javascript
You might like
PHP中动态HTML的输出技术
2006/10/09 PHP
PHP开发规范手册之PHP代码规范详解
2011/01/13 PHP
Windows7下的php环境配置教程
2015/02/28 PHP
php冒泡排序与快速排序实例详解
2015/12/07 PHP
php如何控制用户对图片的访问 PHP禁止图片盗链
2016/03/25 PHP
php简单的上传类分享
2016/05/15 PHP
PHP迭代与递归实现无限级分类
2017/08/28 PHP
PHP闭包定义与使用简单示例
2018/04/13 PHP
Thinkphp极验滑动验证码实现步骤解析
2020/11/24 PHP
JS+CSS实现滑动切换tab菜单效果
2015/08/25 Javascript
js实现对ajax请求面向对象的封装
2016/01/08 Javascript
Angularjs material 实现搜索框功能
2016/03/08 Javascript
javascript函数自动执行常用方法汇总
2016/03/28 Javascript
Ionic如何实现下拉刷新与上拉加载功能
2016/06/03 Javascript
JS从数组中随机取出几个数组元素的方法
2016/08/02 Javascript
浅谈node中的cluster集群
2018/06/02 Javascript
详解ng-alain动态表单SF表单项设置必填和正则校验
2019/06/11 Javascript
JS 遍历 json 和 JQuery 遍历json操作完整示例
2019/11/11 jQuery
javascript实现京东快递单号的查询效果
2020/11/30 Javascript
python正常时间和unix时间戳相互转换的方法
2015/04/23 Python
Python中的filter()函数的用法
2015/04/27 Python
python结合selenium获取XX省交通违章数据的实现思路及代码
2016/06/26 Python
python如何在循环引用中管理内存
2018/03/20 Python
Python使用win32 COM实现Excel的写入与保存功能示例
2018/05/03 Python
浅谈python requests 的put, post 请求参数的问题
2019/01/02 Python
Python使用修饰器进行异常日志记录操作示例
2019/03/19 Python
Python的numpy库下的几个小函数的用法(小结)
2019/07/12 Python
python opencv实现gif图片分解的示例代码
2019/12/13 Python
多个python文件调用logging模块报错误
2020/02/12 Python
plt.figure()参数使用详解及运行演示
2021/01/08 Python
一级方程式赛车官方网上商店:F1 Store(支持中文)
2018/01/12 全球购物
行政人员工作职责
2013/12/05 职场文书
护士个人自我鉴定
2014/03/24 职场文书
新年团拜会主持词
2014/04/02 职场文书
先进典型事迹材料
2014/12/29 职场文书
MySQL 表锁定 LOCK和UNLOCK TABLES的 SQL语法
2022/04/18 MySQL