1、项目文件夹中创建各类型文件放置的文件夹,如:iTestingWeb文件夹下创建src dist文件夹,用途:src为源码 dist为生成后的文件放置位置,然后在源码文件夹中进一步按文件类型增加文件夹:css、js、images等文件夹

2、在src文件夹中创建一个入口index.html文件,vscode编译器使用快捷键:!+Tab方式快速创建html页面,并快捷创建一个测试代码:

ul>li*10{这是第$个li},实现10行测试数据快速生成

3、继续在src中创建js的入口文件:main.js

4、由于会用到js文件,因此我们导入jquery:在终端中(项目文件夹)里首先运行:npm init 来初始化生成一个package.json,该文件有以下几个作用:

  a、作为一个描述文件,来描述你的项目依赖了哪些包

  b、允许使用“语义化”来指定项目依赖包的版本

  c、更好的与其他开发者分享,便于重复使用

5、初始化npm后,开始安装依赖包:jquery:npm i jquery,安装成功后,项目文件会增加一个文件夹:node_modules来存放下来好的依赖包

6、不倡导直接在html中增加jquery的引入,因为会多一次请求,因此我们直接把jquery的引入封装到main.js入口js文件中:import $ form 'jquery'  ,逻辑为:从node_modules里到处jquery.js并赋值给前端用$来接收,以后的$就代表jquery。另:import 引入模式为es6的模块引入方式。

7、因为通过import方式所以传统的解析是不支持的,因此开始引入webpack,首先要安装webpack:

运行`npm i webpack -g`全局安装webpack,这样就能在全局使用webpack的命令

8、安装完后执行命令来实现webpack的打包:

webpack src/js/main.js dist/bundle.js.  该语句的意图是:把源码的main.js文件打包成支持所有兼容的bundle.js文件来供前端访问.

9、基本的发布已经搞定,现在要简化一下,不要每次输入  src/js/main.js dist/bundle.js. 这样的入口和出口地址部分,想直接输入webpack就可以直接打包:项目根目录中增加“webpack.config.js”配置文件,然后就可以执行简易的打包命令:webpcak即可

//这个配置文件,其实就是一个js文件,通过Node中的模块操作向外暴露一个配置对象,然后命令行通过webpack命令直接被执行
module.exports = {//配置文件中,需要手动指定入口和出口//入口entry: {//表示要使用的webpack打包哪个文件path: path.join(__dirname, './src/main.js'),},//出口output: {//指定打包好的文件输出到哪个目录里path: path.join(__dirname, './dist'),//指定输出文件的名称filename: 'bundle.js'}
}

10、接下来继续延伸:如果每次修改每次都在命令行中输入webpack也是烦躁的,我们可以通过另一个工具来简化:webpack-dev-server;注意:该工具安装必须依赖本地项目要存在webpack,就是说即使已经安全的全局的webpack,也需要在项目本地再安装一遍:npm i webpack -D ;安装webpack-dev-server命令为:npm i webpack-dev-server -D,安装完毕后,当直接在命令行执行webpack-dev-server命令的时候会出现错误,原因是因为webpack-dev-server不会全局,也不应该是全局,因此如果想支持这个工具,就需要在package.json配置文件中增加脚本快捷:scripts下增加:

{"name": "itestingweb","version": "1.0.0","description": "","main": "index.js","scripts": {"test": "echo \"Error: no test specified\" && exit 1","dev": "webpack --mode development","build": "webpack --mode production","start2": "webpack-dev-server --open --port 3000  --contentBase src --hot","start": "webpack-dev-server --open"},"author": "","license": "ISC","dependencies": {"jquery": "^3.3.1"},"devDependencies": {"clean-webpack-plugin": "^0.1.19","css-loader": "^1.0.0","html-webpack-plugin": "^3.2.0","style-loader": "^0.21.0","webpack": "^4.16.4","webpack-cli": "^3.1.0","webpack-command": "^0.4.1","webpack-dev-server": "^3.1.5"}
}

这样只要执行:npm run start就可以运行工具。后面的“--open”表示的是执行命令后直接打开浏览器,安装完开发者环境后,如何才能实现修改后页面自动更新?这就需要一个热更新插件:

HotModuleReplacementPlugin
该对象的使用步骤为:1、webpack.config.js增加开发者服务配置(devServer):
devServer: {//contentBase: './dist',// 设置服务器访问的基本目录contentBase: path.resolve(__dirname, 'dist'), //最好设置成绝对路径// 设置服务器的ip地址,可以是localhosthost: 'localhost',// 设置端口port: 8090,// 设置自动拉起浏览器open: true,// 设置热更新hot: true}

2、webpack.config.js引入webpack对象(因为热更方法在对象中)

const webpack = require('webpack');
3、插件配置中new一个热更新对象
new webpack.HotModuleReplacementPlugin(),
这样重新npm run start 就可以实现热更新了,只要服务开着 就不需要每次再做其他动作了。只管调整项目代码就好

11、目前我们可以知道bundle.js是根据webpack-dev-server这个工具将其放在了缓存中,那么是否可以将html页面也放进去?答案是肯定的,这就需要借助一个插件来实现:html-webpack-plugin ,安装命令:npm i html-webpack-plugin -D,安装好后,需要在webpack.config.js里增加配置,先导入插件

const htmlWebpackplugin = require('html-webpack-plugin');

,再在plugins里new出对象:

const path = require('path')
const htmlWebpackplugin = require('html-webpack-plugin');
const CleanWebpackPlugin = require('clean-webpack-plugin');
const webpack = require('webpack');//这个配置文件,其实就是一个js文件,通过Node中的模块操作向外暴露一个配置对象,然后命令行通过webpack命令直接被执行
module.exports = {//配置文件中,需要手动指定入口和出口//入口entry: {//表示要使用的webpack打包哪个文件path: path.join(__dirname, './src/main.js'),},//出口output: {//指定打包好的文件输出到哪个目录里path: path.join(__dirname, './dist'),//指定输出文件的名称filename: 'bundle.js'},plugins: [new webpack.NamedModulesPlugin(),//new一个热更新的模块对象(步骤:1、devServer增加配置 2、引用webpack对象(const webpack = require('webpack') 3、插件数组中 new一个热启动对象 ))new webpack.HotModuleReplacementPlugin(),new htmlWebpackplugin({title: 'Output Management',template: path.join(__dirname,'./src/index.html'),filename:'index.html'})],devServer: {//contentBase: './dist',// 设置服务器访问的基本目录contentBase: path.resolve(__dirname, 'dist'), //最好设置成绝对路径// 设置服务器的ip地址,可以是localhosthost: 'localhost',// 设置端口port: 8090,// 设置自动拉起浏览器open: true,// 设置热更新hot: true},devtool: 'inline-source-map',//用于配置所有的第三方模块加载器module:{rules:[//配置处理.css文件的第三方loader规则{test:/\.css$/,use:['style-loader','css-loader']},]}
}

然后执行 npm run start就会自动将页面放在缓存里了,当使用了html-webpack-plugin这个插件后,就不再需要我们再手动处理js的引用了,因为这个插件已经帮我们创建了一个合适的script,并且引用了正确的访问路径,此时在html页面我们会看到:

<script type="text/javascript" src="bundle.js"></script>

这行代码。

12、此时基本的页面已经出来了,那么我们如何增加样式资源呢?

  这就需要增加样式文件及其引用来处理:在css文件夹里增加一个index.css文件,比如要删除每行记录前面的点:

li{list-style: none;
}

然后在入口js里增加css的资源引用:import './css/index.css',此时我们支持npm run start会出现错误,那是因为我们缺少两个工具:'style-loader','css-loader',如何增加:

1、先npm i style-loader -D; npm i css-loader -D

2、再在webpack.config.js里增加配置:

//用于配置所有的第三方模块加载器module:{rules:[//配置处理.css文件的第三方loader规则{test:/\.css$/,use:['style-loader','css-loader']},]}}

注意:此配置中test后面的处理是依据正则表达式来进行.css文件识别的,并且:在工具加载的时候步骤是先css-loader再style-loader的从右向左的顺序执行工具加载。当加载完style-loader后,再将加载后的工具加载到webpack中用来打到调用。

13、

//在项目下,运行下列命令行
npm install --save-dev sass-loader
//因为sass-loader依赖于node-sass,所以还要安装node-sass
npm install --save-dev node-sass

转载于:https://www.cnblogs.com/cristin/p/9418997.html

webpack创建页面的过程相关推荐

  1. git 创建webpack项目_从0到1开发一个小程序cli脚手架(一)创建页面/组件模版篇...

    github地址: https://github.com/jinxuanzheng01/xdk-cli cli工具是什么? 在正文之前先大致描述下什么是cli工具, cli工具英文名command-l ...

  2. Vue - vue+webpack创建的项目打包发布至服务器,页面空白及背景图片不显示问题解决

    vue+webpack创建的项目打包发布至服务器,页面空白及背景图片不显示问题解决 一. 页面显示空白 二. 背景图片不显示 一. 页面显示空白 解决方法: config > index.js ...

  3. 巧用 webpack 做页面静态资源依赖分析

    原文链接 作者:梯田 前言: 所谓[静态资源依赖分析],指的是可以通过分析页面资源后,可以以 json 数据或者图表的方式拿到页面资源间的依赖关系. 比如 college-index(酷家乐大学首页) ...

  4. ASP.NET Web API 过滤器创建、执行过程(二)

    ASP.NET Web API 过滤器创建.执行过程(二) 前言 前面一篇中讲解了过滤器执行之前的创建,通过实现IFilterProvider注册到当前的HttpConfiguration里的服务容器 ...

  5. 32拟合分析_SigmaPlot14.5:指导用户逐步完成图形创建和数据分析过程

    SigmaPlot 14.5 专为满足科学家.专业研究人员和工程师的需求而设计 SigmaPlot凭借获奖的界面和直观的向导技术,指导用户逐步完成图形创建和数据分析过程.SigmaPlot具备创建令人 ...

  6. SharePoint 2013 入门教程之创建页面布局及页面

    原文:SharePoint 2013 入门教程之创建页面布局及页面 在SharePoint的使用过程中,页面布局和页面时很重要的两个概念,主要用于数据个性化展示,下面,我们简单介绍一下SharePoi ...

  7. 浏览器从输入URL到页面渲染过程 ——页面渲染流程

    之前我有总结过一篇经典面试题:浏览器从输入URL到页面渲染过程 ,接下里我将对某些知识点进行更细致的解析. 浏览器从输入URL到页面渲染过程 系列文章: (一):浏览器从输入URL到页面渲染过程 -- ...

  8. 浏览器从输入URL到页面渲染过程 —— 浏览器的进程与线程

    之前我有总结过一篇经典面试题:浏览器从输入URL到页面渲染过程,接下里我将对某些知识点进行更细致的解析. 浏览器从输入URL到页面渲染过程 系列文章: (二):浏览器从输入URL到页面渲染过程 --页 ...

  9. web服务器使用JSP创建网页的过程

    通过浏览器 调用.jsp文件 通过浏览器url调用 Servlet 文件 第一点: eclipse环境下,创建访问.jsp文件和创建访问servlet文件 参考http://www.runoob.co ...

  10. Gatsby 学习 - 01 Gatsby 介绍、创建页面

    本文 Gatsby 版本为 v3. Gatsby 介绍 Gatsby 是一个基于 React 的静态站点生成器. Gatsby 通过 React 开发应用,当应用开发完成后,Gatsby 可以把这个 ...

最新文章

  1. 粒子系统模拟-计算机图形学 豆瓣,基于粒子系统的瀑布模拟与实现
  2. SPI接口比IIC速度快的理解
  3. 列表反向组成数字相加,并输出数组反向组成列表
  4. 清华来了第二位菲尔兹奖得主,是丘成桐力荐的老朋友Caucher Birkar
  5. python 2x可以打么_Python打基础一定要吃透这68个内置函数
  6. 使用React的static方法实现同构以及同构的常见问题
  7. vue router 路由鉴权(非动态路由)
  8. Django引入静态文件
  9. Linux操作系统下的多线程编程详细解析----条件变量
  10. 在html中使用css的主要方式有,html中使用css的方法有哪几种
  11. Sublime Text安装与配置教程
  12. 清华大学操作系统OS学习(四)——物理内存管理:连续内存分配
  13. 【HDU 6274】Master of sequence【二分答案+下取整转换】
  14. HTML仿网易云音乐首页静态,用 Vue.js 模仿一个简单的网易云音乐
  15. python 多线程测试_【Python】多线程网站死链检测工具
  16. 分布式机器学习(下)-联邦学习
  17. 机器学习-验证策略总结【交叉验证、验证集方法】
  18. 获取Map的key值的几种方式
  19. SEO过程中外链的误区
  20. 超链接打开qq对话框

热门文章

  1. 每次打印只能打打印一页
  2. null和空的区别 oracle,Oracle中NULL与空字符串''的区别的总结
  3. c语言写一元一次函数图像,一元一次函数练习题带答案.doc
  4. 从网卡发送数据再谈TCP/IP协议—网络传输速度计算-网卡构造
  5. 通过Google分析页面加载缓慢并优化
  6. mysql实际是用命令还是图形化_那些你不常用却非常有用的MySql语句和命令
  7. MyBatis之使用XML配置SQL映射(二)CRUD映射配置
  8. 使用 Eclipse 平台进行调试
  9. 23种设计模式(五)单一职责之装饰模式
  10. 主席树 || 可持久化线段树 || BZOJ 3653: 谈笑风生 || Luogu P3899 [湖南集训]谈笑风生...