前端路由&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 相关文章推荐
打造个性化的功能强大的Jquery虚拟键盘(VirtualKeyboard)
Oct 11 Javascript
JavaScript中Number.MIN_VALUE属性的使用示例
Jun 04 Javascript
使用angular帮你实现拖拽的示例
Jul 05 Javascript
基于JavaScript实现无缝滚动效果
Jul 21 Javascript
vue2实现可复用的轮播图carousel组件详解
Nov 27 Javascript
js和jQuery以及easyui实现对下拉框的指定赋值方法
Jan 23 jQuery
vuex操作state对象的实例代码
Apr 25 Javascript
npm 下载指定版本的组件方法
May 17 Javascript
原生JS实现的放大镜特效示例【测试可用】
Dec 08 Javascript
JavaScript两种计时器的实例讲解
Jan 31 Javascript
jQuery/JS监听input输入框值变化实例
Oct 17 jQuery
webpack是如何实现模块化加载的方法
Nov 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删除非空目录的函数代码小结
2013/02/28 PHP
基于PHP常用字符串的总结(待续)
2013/06/07 PHP
PHP中mysqli_affected_rows作用行数返回值分析
2014/12/26 PHP
php使用正则表达式获取图片url的方法
2015/01/16 PHP
PHP自带方法验证邮箱是否存在
2016/02/01 PHP
老生常谈ThinkPHP中的行为扩展和插件(推荐)
2017/05/05 PHP
php实现支持中文的文件下载功能示例
2017/08/30 PHP
php面向对象重点知识分享
2019/09/27 PHP
JavaScript程序员应该知道的45个实用技巧
2014/03/04 Javascript
js 左右悬浮对联广告代码示例
2014/12/12 Javascript
javascript正则表达式之search()用法实例
2015/01/19 Javascript
javascript上下方向键控制表格行选中并高亮显示的方法
2015/02/13 Javascript
JavaScript获取当前日期是星期几的方法
2015/04/06 Javascript
jQuery EasyUI Pagination实现分页的常用方法
2016/05/21 Javascript
vue-router实现webApp切换页面动画效果代码
2017/05/25 Javascript
jQuery.Form实现Ajax上传文件同时设置headers的方法
2017/06/26 jQuery
vuejs手把手教你写一个完整的购物车实例代码
2017/07/06 Javascript
详解vue.js下引入百度地图jsApi的两种方法
2018/07/27 Javascript
vue的keep-alive中使用EventBus的方法
2019/04/23 Javascript
Python单元测试框架unittest使用方法讲解
2015/04/13 Python
Python基础知识_浅谈用户交互
2017/05/31 Python
PyQt5的安装配置过程,将ui文件转为py文件后显示窗口的实例
2019/06/19 Python
用python打印1~20的整数实例讲解
2019/07/01 Python
PyTorch的Optimizer训练工具的实现
2019/08/18 Python
ajax是什么及其工作原理
2012/02/08 面试题
食品安全工作方案
2014/05/07 职场文书
技能比武方案
2014/05/21 职场文书
医院义诊活动总结
2014/07/04 职场文书
公司领导班子四风对照检查材料
2014/09/27 职场文书
2014年接待工作总结
2014/11/26 职场文书
网络营销计划书
2015/01/17 职场文书
八达岭长城导游词
2015/01/30 职场文书
建议书范文
2015/02/05 职场文书
劳务派遣管理制度(样本)
2019/08/23 职场文书
python爬取企查查企业信息之selenium自动模拟登录企查查
2021/04/08 Python
python 解决微分方程的操作(数值解法)
2021/05/26 Python