
本书是按照《Web前端开发职业技能等级标准》(高级)编写的配套实践教材,教材中所有应用技术专题和项目代码均在主流浏览器中运行通过。本书结合大学计算机相关专业的Web前端开发方向课程体系、企业Web前端开发岗位能力模型和《Web前端开发职业技能等级标准》,形成Web前端开发三位一体知识地图,以实践能力为导向,以企业真实应用为目标,遵循企业软件工程标准和技术,以任务为驱动,对HBuilderX工具、HTML5、CSS3、JavaScript、jQuery、MySQL、AJAX、RESTful API、Node.js、Express、Vue.js、jQuery Mobile、Less、Canvas、SVG、ES6、webpack、性能优化等Web前端开发中的重要知识单元,结合实际案例和应用环境进行了分析和设计,并对每一个重要的知识单元进行了详细介绍,力求使读者真正掌握这些知识,从而在实际场景中加以应用。全书分为两部分:第一部分为实验,采用技术专题进行知识单元训练,可以对应课程练习,针对不同的知识单元设计了实验项目,重点训练每一个知识单元内容;第二部分为综合实践,可以对应课程设计,用“Web聊天室”项目贯穿Web前端开发核心知识,系统训练核心知识在企业真实项目中的应用。本书适合作为《Web前端开发职业技能等级标准》(高级)的实践教学参考用书,也适合作为对Web前端开发感兴趣的读者的指导用书。
前 言 为了帮助读者学习和掌握《Web前端开发职业技能等级标准》(高级)中涵盖的实践技能,工业和信息化部教育与考试中心1+X项目组组织企业工程技术人员编写了本书。本书按照标准涉及的核心技能要求精心设计了技术专题,这些技术专题全部按照企业项目开发思路进行分析和设计。 除此之外,本书还设计了一个社交领域网站案例,以提高读者Web前端开发应用实践能力。在编写过程中,注重引导读者理解如何将Web前端开发中的知识单元与项目需求和技术对接,并采用迭代开发思路进行每一个功能的开发。 全书分为实验(技术专题)和综合实践(聊天室项目)两部分,每一部分都设定了实践目标,以任务为驱动,采用迭代开发思路进行开发,共23章。 第1章是实践概述,主要描述本书的实践目标、实践知识地图和实施安排。 第2章至第22章是实验(技术专题)部分,针对HBuilderX工具、ES6、Node.js、Express、AJAX、JSONP、RESTful API、Vue.js、性能优化、webpack、Canvas、SVG、Less、jQuery Mobile等核心知识单元设计了技术专题,每一个技术专题针对一次实验项目进行训练,内容包括实验目标、实验任务、设计思路和实验实施(跟我做),最大限度地覆盖了Web前端开发高级实践内容。 第23章是综合实践部分,设计了“Web聊天室”实践案例,系统训练Web前端开发核心知识,阐释了如何在真实的企业项目中应用Web前端开发核心知识,并通过“迭代开发”详细讲解了实践项目开发过程。整个项目根据技术选型和功能模块,分为五大阶段,分别为“第一阶段Node.js”、“第二阶段Express”、“第三阶段Vue.js”、“第四阶段移动端开发(jQuery Mobile)”和“第五阶段性能优化”,层层递进,可以系统训练Web前端开发核心知识。通过技术专题和案例综合训练,使读者能够达到高级Web前端工程师水平。 参与本书编写工作的人员有张晋华、马庆槐、王博宜、郑婕、吴奇飞、李文、黄俊丹、赵俊、姜宜池、杜慧情、成菲、江涛、彭险等。谭志彬、龚玉涵依据《Web前端开发职业技能等级标准》(高级)为本书做了整体策划和内容统筹。 由于编者的水平和时间有限,本书难免存在不足之处,敬请读者批评和指正。 编 者
目 录 第1章 概述 1 1.1 实践目标 1 1.2 实践知识地图 2 1.3 实施安排 13 1.3.1 实验(技术专题)部分 13 1.3.2 综合实践部分 31 第2章 开发工具(HBuilderX工具) 36 2.1 实验目标 36 2.2 实验任务 36 2.3 设计思路 36 2.4 实验实施 37 2.4.1 步骤一:下载并安装HBuilderX 37 2.4.2 步骤二:HBuilderX 主界面 38 2.4.3 步骤三:创建项目 39 2.4.4 步骤四:编辑html文件 39 2.4.5 步骤五:运行 40 第3章 ES6(网页计算器) 42 3.1 实验目标 42 3.2 实验任务 43 3.3 设计思路 44 3.4 实验实施(跟我做) 45 3.4.1 步骤一:创建项目和文件 45 3.4.2 步骤二:制作HTML页面 45 3.4.3 步骤三:制作CSS样式 46 3.4.4 步骤四:编写网页计算器类 47 3.4.5 步骤五:编写乘除 运算逻辑 47 3.4.6 步骤六:编写加减运算逻辑 48 3.4.7 步骤七:编写数据返回方法 48 3.4.8 步骤八:页面交互逻辑 48 3.4.9 步骤九:运行效果 49 第4章 Node.js (第一个Node.js程序) 52 4.1 实验目标 52 4.2 实验任务 53 4.3 设计思路 53 4.4 实验实施 54 4.4.1 步骤一:Node.js的下载与 安装 54 4.4.2 步骤二:HBuilderX的下载与 安装 57 4.4.3 步骤三:Node.js目录 结构 57 4.4.4 步骤四:创建项目和文件 58 4.4.5 步骤五:使用NPM包管理 工具 58 4.4.6 步骤六:创建服务器 58 4.4.7 步骤七:运行效果 59 第5章 Node.js(Web便签) 60 5.1 实验目标 60 5.2 实验任务 61 5.3 设计思路 61 5.4 实验实施(跟我做) 62 5.4.1 步骤一:创建项目和文件 62 5.4.2 步骤二:完成页面显示 63 5.4.3 步骤三:完成资源判断 64 5.4.4 步骤四:实现前后端交互 66 5.4.5 步骤五:完成文件写入 67 5.4.6 步骤六:完成文件读取 67 5.4.7 步骤七:获取便签列表 68 5.4.8 步骤八:运行效果 68 第6章 Node.js(文学网) 70 6.1 实验目标 70 6.2 实验任务 70 6.3 设计思路 72 6.4 实验实施(跟我做) 73 6.4.1 步骤一:创建项目和文件 73 6.4.2 步骤二:准备数据 74 6.4.3 步骤三:实现文学网页面 74 6.4.4 步骤四:实现请求处理 78 6.4.5 步骤五:实现用户登录 79 6.4.6 步骤六:实现退出登录功能 81 6.4.7 步骤七:实现读者页面功能 81 6.4.8 步骤八:实现作者发布文章 功能 85 6.4.9 步骤九: 实现读者接收文章 内容 86 6.4.10 步骤十:运行效果 89 第7章 Node.js(简历网) 91 7.1 实验目标 91 7.2 实验任务 92 7.3 设计思路 93 7.4 实验实施(跟我做) 95 7.4.1 步骤一:安装Express应用程序生成器 95 7.4.2 步骤二:使用应用程序生成器 创建项目 95 7.4.3 步骤三:Express目录结构 95 7.4.4 步骤四:构建前端页面 96 7.4.5 步骤五:安装和连接MySQL 数据库 98 7.4.6 步骤六:开发中间件 99 7.4.7 步骤七:实现路由跳转 99 7.4.8 步骤八:运行效果 101 第8章 JSONP(商品清单) 103 8.1 实验目标 103 8.2 实验任务 103 8.3 设计思路 104 8.4 实验实施(跟我做) 105 8.4.1 步骤一:创建项目和文件 105 8.4.2 步骤二:创建前端页面 106 8.4.3 步骤三:创建HTTP 服务器 107 8.4.4 步骤四:发送跨域请求 107 8.4.5 步骤五:后台请求处理 108 8.4.6 步骤六:数据写入页面 108 8.4.7 步骤七:运行效果 108 第9章 RESTful API(在线答题器) 110 9.1 实验目标 110 9.2 实验任务 111 9.3 设计思路 111 9.4 实验实施(跟我做) 112 9.4.1 步骤一:创建项目和文件 112 9.4.2 步骤二:设计完成前端页面 113 9.4.3 步骤三:实现答题功能 115 9.4.4 步骤四:前端功能实现 116 9.4.5 步骤五:运行效果 117 第10章 Vue.js(第一个Vue.js程序) 118 10.1 实验目标 118 10.2 实验任务 119 10.3 设计思路 120 10.4 实验实施(跟我做) 120 10.4.1 步骤一:HBuilderX的下载和 安装 120 10.4.2 步骤二:Node.js的下载和 安装 121 10.4.3 步骤三:安装webpack 121 10.4.4 步骤四:安装Vue CLI 脚手架 121 10.4.5 步骤五:创建工程 122 10.4.6 步骤六:启动项目 123 第11章 Vue.js(文章管理) 125 11.1 实验目标 125 11.2 实验任务 127 11.3 设计思路 128 11.4 实验实施(跟我做) 131 11.4.1 步骤一:创建项目和文件 131 11.4.2 步骤二:配置路由规则 132 11.4.3 步骤三:安装和引入 Axios 133 11.4.4 步骤四:配置跨域请求 代理 133 11.4.5 步骤五:准备文章列表 数据 133 11.4.6 步骤六:编写文章管理 页面 134 11.4.7 步骤七:编写文章添加 页面 135 11.4.8 步骤八:准备移动端文章 列表数据 137 11.4.9 步骤九:编写移动端文章 列表页面 138 11.4.10 步骤十:Node.js接口 139 11.4.11 步骤十一:请求后台接口 141 11.4.12 步骤十二:运行效果 142 第12章 Vue.js(网页聊天室) 144 12.1 实验目标 144 12.2 实验任务 145 12.3 设计思路 145 12.4 实验实施(跟我做) 147 12.4.1 步骤一:创建项目和文件 147 12.4.2 步骤二:配置路由规则 148 12.4.3 步骤三:编写用户登录 页面 149 12.4.4 步骤四:登录信息验证 150 12.4.5 步骤五:准备聊天室数据 150 12.4.6 步骤六:编写聊天室页面 151 12.4.7 步骤七:聊天页面初始化 设置 152 12.4.8 步骤八:编写对话框组件 152 12.4.9 步骤九:父子组件的传值 154 12.4.10 步骤十:运行效果 155 第13章 Vue.js(美食网) 156 13.1 实验目标 156 13.2 实验任务 157 13.3 设计思路 158 13.4 实验实施(跟我做) 160 13.4.1 步骤一:创建项目和文件 160 13.4.2 步骤二:配置路由规则 161 13.4.3 步骤三:Vuex的Store 配置 161 13.4.4 步骤四:创建页头组件 162 13.4.5 步骤五:创建页脚组件 163 13.4.6 步骤六:注册页头和页脚 全局组件 164 13.4.7 步骤七:准备菜品列表 数据 164 13.4.8 步骤八:创建美食网首页 164 13.4.9 步骤九:创建购物车页面 167 第14章 HTML和CSS代码结构优化(小说网首页) 171 14.1 实验目标 171 14.2 实验任务 172 14.3 设计思路 172 14.4 实验实施(跟我做) 174 14.4.1 步骤一:创建项目和文件 174 14.4.2 步骤二:构建HTML页面 174 14.4.3 步骤三:使用CSS样式美化 页面 177 14.4.4 步骤四:使用jQuery实现动态透明效果 180 第15章 图片资源优化(雪碧图) 181 15.1 实验目标 181 15.2 实验任务 181 15.3 设计思路 182 15.4 实验实施(跟我做) 182 15.4.1 步骤一:创建项目和文件 182 15.4.2 步骤二:制作HTML页面 183 15.4.3 步骤三:制作雪碧图 183 15.4.4 步骤四:实现缩小和压缩 184 15.4.5 步骤五:制作CSS样式 184 15.4.6 步骤六:运行效果 185 第16章 前端资源加载优化 (在线相册) 186 16.1 实验目标 186 16.2 实验任务 186 16.3 设计思路 187 16.4 实验实施(跟我做) 188 16.4.1 步骤一:创建项目和文件 188 16.4.2 步骤二:设计完成前端页面,实现预加载 189 16.4.3 步骤三:前端发送获取图片 请求 189 16.4.4 步骤四:后台处理请求, 返回响应信息 190 16.4.5 步骤五:运行效果 190 第17章 webpack (打包项目—文章管理) 191 17.1 实验目标 191 17.2 实验任务 192 17.3 设计思路 192 17.4 实验实施(跟我做) 192 17.4.1 步骤一:使用NPM下载并安装webpack和webpack-cli 192 17.4.2 步骤二:webpack配置文件的 配置参数 192 17.4.3 步骤三:打包文章管理 项目 194 17.4.4 步骤四:部署到Express 195 17.4.5 步骤五:运行效果 195 第18章 CSS3 2D和3D (手机相册) 197 18.1 实验目标 197 18.2 实验任务 197 18.3 设计思路 199 18.4 实验实施(跟我做) 199 18.4.1 步骤一:创建项目和文件 199 18.4.2 步骤二:创建移动端的 HTML页面 200 18.4.3 步骤三:使用flex弹性布局 美化页面 200 18.4.4 步骤四:制作Y轴的旋转 效果 201 18.4.5 步骤五:制作点击放大 效果 201 18.4.6 步骤六:运行效果 202 第19章 Canvas(手机账单) 203 19.1 实验目标 203 19.2 实验任务 204 19.3 设计思路 204 19.4 实验实施(跟我做) 205 19.4.1 步骤一:创建项目和文件 205 19.4.2 步骤二:制作HTML页面 205 19.4.3 步骤三:制作数据 205 19.4.4 步骤四:制作表格 206 19.4.5 步骤五:制作坐标 207 19.4.6 步骤六:填充数据 207 19.4.7 步骤七:运行效果 208 第20章 SVG(SVG绘制图标) 209 20.1 实验目标 209 20.2 实验任务 210 20.3 设计思路 210 20.4 实验实施(跟我做) 211 20.4.1 步骤一:创建项目和文件 211 20.4.2 步骤二:SVG图片文件的 结构 211 20.4.3 步骤三:绘制SVG图片 212 20.4.4 步骤四:应用SVG图片 212 20.4.5 步骤五:运行效果 213 第21章 Less(菜单) 214 21.1 实验目标 214 21.2 实验任务 214 21.3 设计思路 215 21.4 实验实施(跟我做) 216 21.4.1 步骤一:创建项目和文件 216 21.4.2 步骤二:Less的安装 217 21.4.3 步骤三:绘制HTML页面 217 21.4.4 步骤四:编写Less, 美化页面 218 21.4.5 步骤五:Less编译 220 21.4.6 步骤六:运行效果 221 第22章 jQuery Mobile (手机通讯录) 223 22.1 实验目标 223 22.2 实验任务 224 22.3 设计思路 224 22.4 实验实施(跟我做) 225 22.4.1 步骤一:下载和引入 225 22.4.2 步骤二:准备数据 226 22.4.3 步骤三:下载和引入jQuery Mobile资源文件 226 22.4.4 步骤四:jQuery Mobile 页面结构 227 22.4.5 步骤五:创建联系人列表 页面 227 22.4.6 步骤六:创建拨号页面 230 22.4.7 步骤七:运行效果 231 第23章 综合实践(Web聊天室) 233 23.1 项目简介 233 23.2 实践目标 233 23.3 需求分析 234 23.4 静态页面设计 236 23.4.1 工作任务 236 23.4.2 设计思路 239 23.4.3 实现(跟我做) 242 23.5 数据库设计和创建 268 23.5.1 工作任务 268 23.5.2 设计思路 268 23.5.3 实现(跟我做) 270 23.6 后端接口设计 274 23.6.1 工作任务 274 23.6.2 设计思路 274 23.6.3 实现(跟我做) 274 23.7 第一阶段Node.js: 创建工程 276 23.7.1 工作任务 276 23.7.2 设计思路 277 23.7.3 实现(跟我做) 277 23.8 第一阶段Node.js: 欢迎界面 284 23.8.1 工作任务 284 23.8.2 设计思路 285 23.8.3 实现(跟我做) 286 23.9 第二阶段Express: 创建Express工程 289 23.9.1 工作任务 289 23.9.2 设计思路 289 23.9.3 实现(跟我做) 290 23.10 第二阶段Express: 管理员登录 294 23.10.1 工作任务 294 23.10.2 设计思路 295 23.10.3 实现(跟我做) 297 23.11 第二阶段Express: 显示用户列表 302 23.11.1 工作任务 302 23.11.2 设计思路 303 23.11.3 实现(跟我做) 305 23.12 第二阶段Express: 获取用户信息 310 23.12.1 工作任务 310 23.12.2 设计思路 310 23.12.3 实现(跟我做) 311 23.13 第二阶段Express: 修改用户信息 314 23.13.1 工作任务 314 23.13.2 设计思路 315 23.13.3 实现(跟我做) 316 23.14 第二阶段Express: 用户登录 323 23.14.1 工作任务 323 23.14.2 设计思路 323 23.14.3 实现(跟我做) 324 23.15 第二阶段Express: 显示聊天列表 326 23.15.1 工作任务 326 23.15.2 设计思路 327 23.15.3 实现(跟我做) 328 23.16 第二阶段Express: 获取聊天信息 334 23.16.1 工作任务 334 23.16.2 设计思路 335 23.16.3 实现(跟我做) 336 23.17 第二阶段Express: 保存聊天信息 341 23.17.1 工作任务 341 23.17.2 设计思路 342 23.17.3 实现(跟我做) 343 23.18 第二阶段Express: 消息统计 348 23.18.1 工作任务 348 23.18.2 设计思路 348 23.18.3 实现(跟我做) 349 23.19 第三阶段Vue.js: 创建Vue工程 352 23.19.1 工作任务 352 23.19.2 设计思路 353 23.19.3 实现(跟我做) 353 23.20 第三阶段Vue.js: 管理员登录 359 23.20.1 工作任务 359 23.20.2 设计思路 360 23.20.3 实现(跟我做) 362 23.21 第三阶段Vue.js: 用户列表 370 23.21.1 工作任务 370 23.21.2 设计思路 371 23.21.3 实现(跟我做) 373 23.22 第三阶段Vue.js: 用户修改 382 23.22.1 工作任务 382 23.22.2 设计思路 383 23.22.3 实现(跟我做) 384 23.23 第三阶段Vue.js: 用户登录 392 23.23.1 工作任务 392 23.23.2 设计思路 394 23.23.3 实现(跟我做) 394 23.24 第三阶段Vue.js: 聊天列表 398 23.24.1 工作任务 398 23.24.2 设计思路 398 23.24.3 实现(跟我做) 399 23.25 第三阶段Vue.js: 消息 401 23.25.1 工作任务 401 23.25.2 设计思路 402 23.25.3 实现(跟我做) 403 23.26 第四阶段移动端开发(jQuery Mobile):用户登录 409 23.26.1 工作任务 409 23.26.2 设计思路 409 23.26.3 实现(跟我做) 411 23.27 第四阶段移动端开发(jQuery Mobile):聊天列表 415 23.27.1 工作任务 415 23.27.2 设计思路 416 23.27.3 实现(跟我做) 417 23.28 第四阶段移动端开发(jQuery Mobile):消息 421 23.28.1 工作任务 421 23.28.2 设计思路 422 23.28.3 实现(跟我做) 423 23.29 第四阶段移动端开发(jQuery Mobile):消息统计 428 23.29.1 工作任务 428 23.29.2 设计思路 429 23.29.3 实现(跟我做) 430 23.30 第五阶段性能优化: 图片资源优化 433 23.30.1 工作任务 433 23.30.2 设计思路 433 23.30.3 实现(跟我做) 434 23.31 第五阶段性能优化: 前端资源加载优化 436 23.31.1 工作任务 436 23.31.2 设计思路 437 23.31.3 实现(跟我做) 437 23.32 第五阶段性能优化: 项目打包 438 23.32.1 工作任务 438 23.32.2 设计思路 439 23.32.3 实现(跟我做) 439