前端路由&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实现仿银行密码输入框效果的代码
Dec 13 Javascript
简单的js图片轮换代码(js图片轮播)
May 06 Javascript
浅析基于WEB前端页面的页面内容搜索的实现思路
Jun 10 Javascript
使用JavaScript 实现的人脸检测
Mar 24 Javascript
AngularJS+Node.js实现在线聊天室
Aug 28 Javascript
JavaScript实现的简单烟花特效代码
Oct 20 Javascript
javascript 正则表达式分组、断言详解
Apr 20 Javascript
使用JS在浏览器中判断当前网络连接状态的几种方法
May 05 Javascript
利用JQuery操作iframe父页面、子页面的元素和方法汇总
Sep 10 jQuery
Vue.js实现的计算器功能完整示例
Jul 11 Javascript
JSONP原理及应用实例详解
Sep 13 Javascript
Vue3项目打包后部署到服务器 请求不到后台接口解决方法
Feb 06 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快递单号查询接口使用示例
2014/05/05 PHP
php实现Linux服务器木马排查及加固功能
2014/12/29 PHP
Apache启动报错No space left on device: AH00023该怎么解决
2015/10/16 PHP
PHP图像裁剪缩略裁切类源码及使用方法
2016/01/07 PHP
PHP模拟http请求的方法详解
2016/11/09 PHP
PHP+jQuery实现滚屏无刷新动态加载数据功能详解
2017/05/04 PHP
js null undefined 空区别说明
2010/06/13 Javascript
JS面向对象编程 for Cookie
2010/09/19 Javascript
javascript之bind使用介绍
2011/10/09 Javascript
js作用域及作用域链概念理解及使用
2013/04/15 Javascript
node.js Web应用框架Express入门指南
2014/05/28 Javascript
js构造函数、索引数组和属性的实现方式和使用
2014/11/16 Javascript
JavaScript之数组(Array)详解
2015/04/01 Javascript
Javascript将字符串日期格式化为yyyy-mm-dd的方法
2016/10/27 Javascript
jQuery实现的简单拖动层示例
2017/02/22 Javascript
Angular实现一个简单的多选复选框的弹出框指令实例
2017/04/25 Javascript
使用nvm管理不同版本的node与npm的方法
2017/10/31 Javascript
JavaScript实现与使用发布/订阅模式详解
2019/01/19 Javascript
JavaScript中的连续赋值问题实例分析
2019/07/12 Javascript
vue filter 完美时间日期格式的代码
2019/08/14 Javascript
vue elementUI 表单校验的实现代码(多层嵌套)
2019/11/06 Javascript
three.js利用卷积法如何实现物体描边效果
2019/11/27 Javascript
在Django中同时使用多个配置文件的方法
2015/07/22 Python
Python迭代器定义与简单用法分析
2018/04/30 Python
Python用于学习重要算法的模块pygorithm实例浅析
2018/08/16 Python
Python容器类型公共方法总结
2020/08/19 Python
Django URL参数Template反向解析
2020/11/24 Python
Speedo美国:澳大利亚顶尖泳衣制造商
2016/08/03 全球购物
美国在线宠物用品商店:Entirely Pets
2017/01/01 全球购物
工作散漫检讨书
2014/09/16 职场文书
党员教师个人对照检查材料范文
2014/09/25 职场文书
五年级学生评语大全
2014/12/26 职场文书
反腐倡廉主题教育活动总结
2015/05/07 职场文书
教师节大会主持词
2015/07/06 职场文书
活动新闻稿范文
2015/07/17 职场文书
7个你应该知道的JS原生错误类型
2021/04/29 Javascript