新書推薦:

《
成功的法则:掌控人生的关键能力
》
售價:HK$
64.9

《
黄宗羲传
》
售價:HK$
74.8

《
教育研究量表手册 21世纪教育科学系列教材
》
售價:HK$
97.9

《
真事隐:康熙废储与正史虚构
》
售價:HK$
85.8

《
工艺之美(席曼婷)
》
售價:HK$
97.9

《
揭秘煤气灯效应:心理操控的哲学透视
》
售價:HK$
60.5

《
走,去地下 探索地球内部的秘密【精装大本】
》
售價:HK$
96.8
![含混的哲思——梅洛-庞蒂·杨大春讲梅洛-庞蒂[修订本合集]](//img.megbook.hk/upload/mall/productImages/26/7/9787303310944.jpg)
《
含混的哲思——梅洛-庞蒂·杨大春讲梅洛-庞蒂[修订本合集]
》
售價:HK$
184.8
|
| 編輯推薦: |
本书是一本专为Web开发初学者打造的零基础入门指南,凝聚了作者二十余年的教学智慧与实战心得,内容系统全面,以清晰的脉络引领读者深入Web开发的完整生态。 全书从核心的客户端知识入手,详尽解析HTML、CSS与JavaScript,奠定坚实的前端基础;进而过渡到服务器端开发,讲解运行环境与关键技术;然后,拓展至Web安全、Web服务器托管与配置等实战主题。通过丰富的案例与学练结合的方式,本书致力于让读者不仅理解原理,更能掌握实际应用技巧,一站式贯通从网页制作到全栈开发的知识与技能。 本书既可作为高校计算机相关专业的理想教材,也是初学者和技术人员不可或缺的案头参考书。
|
| 內容簡介: |
|
本书面向初学者,系统、全面地介绍了Web开发的相关知识,涵盖Web开发的各种元素以及流程。本书案例丰富,类型多样,读者可在学习过程中边学边练,从而能够轻松地掌握应用技巧。本书第1~11章介绍了客户端基础知识,包括Web开发基础、Web工作原理、HTML、CSS、网页多媒体和JavaScript。第12~15章概述了服务器端开发基础,介绍了Web服务器的运行环境以及开发技术。第16~18章是与Web开发相关的其他重要主题,涉及Web安全、Web服务器的托管与配置等内容。本书适合作为高校计算机及相关专业的Web开发课程的教材,也适合作为Web开发初学者和IT技术人员的参考书。
|
| 關於作者: |
加拿大皇家山大学数学与计算系教授,长期从事web开发相关课程的教学,拥有丰富的web开发经验。 兰德·康奈利(Randy Connolly) 加拿大皇家山大学数学与计算系终身教授。他主要从事Web应用开发与技术、社会研究方面的教学。他的研究兴趣包括Web开发教学、计算机教育学科的一般教学法、计算机的社会影响等。他出版了3本图书,撰写了34篇经同行评审的论文,发表了20多篇国际研究报告,并获得了3次最佳论文奖和1次教学奖。他也是计算机教育两大期刊(ACM Transactions on Computing Education和ACM Inroads)的编委会成员。 里卡多·霍尔(Ricardo Hoar) 加拿大皇家山大学原副教授兼系主任,并曾任加拿大谢里丹学院应用计算学院副院长。他在非学术领域的职业经历包括程序员、网站主管、系统管理员和项目经理等。当前,他的研究方向为将万维网技术与人工智能技术相结合,应用于增强现实等前沿领域。
刘海燕,博士毕业于国防科技大学,师从知名计算机专家陈火旺教授,后调入装甲兵工程学院任教。主要从事计算机应用与开发相关课程的教学工作,主要研究方向为程序编译与优化、计算机体系结构等。在知名期刊上发表论文30余篇,翻译、编写教材近10部。
|
| 目錄:
|
译者序 前 言 致 谢 第1章 Web开发基础1 1.1 一个复杂的生态系统1 1.2 定义及发展历史3 1.2.1 互联网简史3 1.2.2 Web的诞生4 1.2.3 Web应用与桌面应用的对比5 1.2.4 从静态到动态(并回归静态)7 1.3 客户机-服务器模型11 1.3.1 客户机11 1.3.2 服务器11 1.3.3 服务器类型12 1.3.4 实际服务器的安装12 1.3.5 云服务器15 1.4 互联网在哪里16 1.4.1 从计算机到户外16 1.4.2 从家到海边17 1.4.3 如今互联网如何组织18 1.5 Web开发工作20 1.5.1 角色和技能20 1.5.2 Web开发公司的类型23 1.6 本章小结25 1.6.1 关键术语26 1.6.2 习题26 1.6.3 参考文献27 第2章 Web工作原理28 2.1 互联网协议28 2.1.1 分层体系结构28 2.1.2 链路层28 2.1.3 网际层29 2.1.4 运输层31 2.1.5 应用层32 2.2 域名系统33 2.2.1 名称等级34 2.2.2 名称注册35 2.2.3 地址解析36 2.3 统一资源定位符38 2.3.1 协议39 2.3.2 域名39 2.3.3 端口39 2.3.4 路径39 2.3.5 查询字符串39 2.3.6 片段标识符40 2.4 超文本传输协议40 2.4.1 40 2.4.2 请求方法42 2.4.3 响应代码43 2.5 Web浏览器43 2.5.1 获取网页43 2.5.2 浏览器渲染44 2.5.3 浏览器缓存45 2.5.4 浏览器功能45 2.5.5 浏览器扩展46 2.6 Web服务器46 2.6.1 操作系统47 2.6.2 Web服务器软件47 2.6.3 数据库软件47 2.6.4 脚本软件47 2.7 本章小结48 2.7.1 关键术语48 2.7.2 习题49 2.7.3 参考文献49 第3章 HTML:简介50 3.1 什么是HTML,它从何而来50 3.1.1 XHTML52 3.1.2 HTML 554 3.2 HTML语法54 3.2.1 元素和属性54 3.2.2 HTML元素嵌套55 3.3 语义标记56 3.4 HTML文档的结构57 3.4.1 DOCTYPE58 3.4.2 Head和Body59 3.5 HTML元素速览59 3.5.1 标题60 3.5.2 段落和分区 63 3.5.3 链接63 3.5.4 URL相对引用65 3.5.5 行内文本元素67 3.5.6 图像68 3.5.7 字符实体68 3.5.8 列表69 3.6 HTML 5语义结构元素71 3.6.1 页眉和页脚元素73 3.6.2 导航元素73 3.6.3 main元素 74 3.6.4 文章和分节元素74 3.6.5 图和图提要元素75 3.6.6 aside元素76 3.6.7 细节和总结元素77 3.6.8 附加语义元素77 3.7 本章小结82 3.7.1 关键术语82 3.7.2 习题82 3.7.3 动手实践83 第4章 CSS:选择器和基本样式87 4.1 什么是CSS87 4.1.1 CSS的优点87 4.1.2 CSS 版本88 4.1.3 浏览器采用88 4.2 CSS语法89 4.2.1 选择器89 4.2.2 属性89 4.2.3 值90 4.3 样式的位置92 4.3.1 内联样式92 4.3.2 内嵌样式表92 4.3.3 外部样式表93 4.4 选择器94 4.4.1 元素选择器94 4.4.2 类选择器95 4.4.3 id选择器96 4.4.4 属性选择器96 4.4.5 伪元素和伪类选择器97 4.4.6 上下文选择器98 4.5 级联:样式如何互动101 4.5.1 继承101 4.5.2 具体性102 4.5.3 位置103 4.6 盒子模型106 4.6.1 块与内联元素的对比106 4.6.2 背景108 4.6.3 边框和盒子阴影110 4.6.4 边距和填充111 4.6.5 盒子尺寸113 4.7 CSS文本样式118 4.7.1 字体家族118 4.7.2 字体大小119 4.7.3 字体粗细122 4.7.4 段落属性122 4.8 CSS框架和变量125 4.8.1 什么是CSS框架125 4.8.2 CSS变量129 4.9 本章小结130 4.9.1 关键术语131 4.9.2 习题131 4.9.3 动手实践132 4.9.4 参考文献135 第5章 HTML:表格和表单136 5.1 HTML表格136 5.1.1 基本表格结构136 5.1.2 跨行和跨列138 5.1.3 附加的表格元素139 5.1.4 使用表格进行布局139 5.2 设置表格样式140 5.2.1 表格边框140 5.2.2 盒子格式和斑马条纹141 5.3 表单简介143 5.3.1 表单结构143 5.3.2 表单如何工作144 5.3.3 查询字符串144 5.3.4 元素145 5.4 表单控件元素146 5.4.1 文本输入控件147 5.4.2 选择控件149 5.4.3 按钮控件150 5.4.4 特殊控件151 5.4.5 日期和时间控件153 5.5 表格和表单的可访问性155 5.5.1 可访问表格155 5.5.2 可访问表单156 5.6 设计表单及其样式157 5.6.1 设置表单元素样式157 5.6.2 设计表单158 5.7 验证用户输入159 5.7.1 输入验证的类型159 5.7.2 通知用户160 5.7.3 如何减少验证错误161 5.7.4 在哪里进行验证163 5.8 本章小结169 5.8.1 关键术语169 5.8.2 习题169 5.8.3 动手实践170 第6章 网页多媒体173 6.1 数字图像的表示173 6.1.1 图像类型174 6.1.2 颜色模型175 6.2 图像的概念179 6.2.1 颜色深度179 6.2.2 图像大小180 6.2.3 显示分辨率183 6.3 文件格式184 6.3.1 JPEG184 6.3.2 GIF185 6.3.3 PNG189 6.3.4 SVG189 6.3.5 其他格式190 6.4 音频与视频192 6.4.1 媒体的概念192 6.4.2 浏览器视频支持192 6.4.3 浏览器音频支持194 6.5 使用颜色196 6.5.1 挑选颜色196 6.5.2 定义色度196 6.6 本章小结198 6.6.1 关键术语198 6.6.2 习题199 6.6.3 动手实践199 第7章 CSS:布局203 7.1 CSS布局的传统方法203 7.1.1 浮动元素204 7.1.2 定位元素204 7.1.3 元素的重叠和隐藏207 7.2 弹性盒子布局209 7.2.1 弹性容器和弹性条目210 7.2.2 弹性盒子使用示例211 7.3 网格布局214 7.3.1 指定网格结构215 7.3.2 显式的网格放置217 7.3.3 单元格属性218 7.3.4 嵌套网格218 7.3.5 网格区域220 7.3.6 网格与弹性盒子结合使用221 7.4 响应式设计223 7.4.1 设定视窗224 7.4.2 媒体查询226 7.4.3 图像缩放228 7.5 CSS特效231 7.5.1 变换231 7.5.2 过滤器232 7.5.3 过渡233 7.5.4 动画236 7.6 CSS预处理器238 7.6.1 Sass基础239 7.6.2 混合与函数241 7.6.3 模块242 7.7 本章小结244 7.7.1 关键术语244 7.7.2 习题245 7.7.3 动手实践245 7.7.4 参考文献250 第8章 JavaScript:语言基础251 8.1 JavaScript的概念和功能251 8.1.1 客户端脚本252 8.1.2 JavaScript发展史253 8.1.3 JavaScript和Web 2.0254 8.1.4 现代软件开发中的 JavaScript254 8.2 JavaScript发展趋势256 8.2.1 内联JavaScript256 8.2.2 嵌入式JavaScript256 8.2.3 外部JavaScript256 8.2.4 不使用JavaScript的用户258 8.3 变量和数据类型258 8.3.1 JavaScript输出260 8.3.2 数据类型261 8.3.3 内置对象263 8.3.4 连接符264 8.4 条件语句264 8.4.1 真假判断267 8.5 循环267 8.5.1 while循环和do...while 循环267 8.5.2 for循环268 8.6 数组269 8.6.1 使用for...of遍历数组271 8.6.2 数组解构271 8.7 对象272 8.7.1 使用对象字面量符号创建 对象272 8.7.2 使用Object构造器创建 对象273 8.7.3 对象解构274 8.7.4 JSON275 8.8 函数278 8.8.1 函数声明与函数表达式278 8.8.2 嵌套函数280 8.8.3 JavaScript中的提升281 8.8.4 回调函数282 8.8.5 对象和函数结合283 8.8.6 函数构造器284 8.8.7 箭头语法285 8.9 JavaScript中的作用域和闭包288 8.9.1 JavaScript中的作用域288 8.9.2 JavaScript中的闭包293 8.10 本章小结294 8.10.1 关键术语294 8.10.2 习题295 8.10.3 动手实践295 8.10.4 参考文献299 第9章 JavaScript:应用300 9.1 文档对象模型300 9.1.1 节点和节点列表301 9.1.2 文档对象301 9.1.3 选择方法302 9.1.4 元素节点对象304 9.2 修改DOM306 9.2.1 修改元素样式306 9.2.2 比较innerHTML、 textContent 和DOM操作307 9.2.3 DOM操作方法308 9.2.4 DOM时序310 9.3 事件312 9.3.1 实现事件处理程序312 9.3.2 页面加载和DOM314 9.3.3 事件对象314 9.3.4 事件传播315 9.3.5 事件代理317 9.3.6 使用数据集属性318 9.4 事件类型320 9.4.1 鼠标事件320 9.4.2 键盘事件321 9.4.3 表单事件321 9.4.4 媒体事件322 9.4.5 框架事件322 9.5 JavaScript中的表单326 9.5.1 响应表单移动事件327 9.5.2 响应表单更改事件327 9.5.3 验证提交的表单328 9.5.4 提交表单330 9.6 正则表达式331 9.6.1 正则表达式语法331 9.6.2 扩展示例332 9.7 本章小结337 9.7.1 关键术语337 9.7.2 习题338 9.7.3 动手实践338 9.7.4 参考文献342 第10章 JavaScript:附加特性343 10.1 数组函数343 10.1.1 forEach343 10.1.2 find、filter、map和 reduce344 10.1.3 sort346 10.2 原型、类和模块347 10.2.1 使用原型348 10.2.2 类350 10.2.3 模块352 10.3 使用JavaScript进行异步编码356 10.3.1 从Web API获取数据358 10.3.2 承诺367 10.3.3 异步和等待369 10.4 使用浏览器API374 10.4.1 Web Storage API374 10.4.2 Web Speech API376 10.4.3 Geolocation API376 10.5 使用外部API377 10.5.1 谷歌地图377 10.5.2 使用Plotly.js绘制图表382 10.6 本章小结385 10.6.1 关键术语385 10.6.2 习题386 10.6.3 动手实践386 10.6.4 参考文献389 第11章 JavaScript: React390 11.1 JavaScript的前端框架390 11.1.1 为什么需要框架390 11.1.2 React、Angular和Vue391 11.2 React简介394 11.2.1 React组件396 11.3 props、状态、行为和表单398 11.3.1 props398 11.3.2 状态401 11.3.3 行为403 11.3.4 React中的表单406 11.3.5 组件的数据流动408 11.4 React构建方式413 11.4.1 构建工具413 11.4.2 Create React App415 11.4.3 其他的React构建方法417 11.5 React的生命周期417 11.5.1 获取数据417 11.6 扩展React418 11.6.1 路由419 11.6.2 React中的CSS420 11.6.3 状态的其他方法421 11.7 本章小结427 11.7.1 关键术语427 11.7.2 习题428 11.7.3 动手实践428 11.7.4 参考文献431 第12章 服务器端开发:PHP432 12.1 什么是服务器端开发432 12.1.1 前端与后端的对比432 12.1.2 常用的服务器端技术432 12.2 PHP语言基础437 12.2.1 PHP的标签437 12.2.2 变量和数据类型438 12.2.3 输出440 12.2.4 并置441 12.3 程序控制444 12.3.1 if...else444 12.3.2 switch...case445 12.3.3 while和do...while446 12.3.4 for446 12.3.5 控制结构的替代语法 447 12.3.6 包含文件447 12.4 函数 449 12.4.1 函数语法449 12.4.2 调用函数 450 12.4.3 参数450 12.4.4 函数内的变量作用域453 12.5 数组454 12.5.1 定义和访问数组455 12.5.2 多维数组456 12.5.3 遍历数组458 12.5.4 增加或删除元素459 12.6 类和对象460 12.6.1 术语461 12.6.2 定义类461 12.6.3 实例化对象462 12.6.4 属性462 12.6.5 构造函数462 12.6.6 方法464 12.6.7 可见性464 12.6.8 静态成员465 12.6.9 继承467 12.7 超全局数组$_GET和$_POST468 12.7.1 超全局数组468 12.7.2 判断是否发送了数据470 12.7.3 访问表单数组数据472 12.7.4 使用超链接中的查询字符串472 12.7.5 净化查询字符串473 12.8 使用HTTP476 12.8.1 使用Location进行 重定向476 12.8.2 设置Content-Type477 12.9 本章小结478 12.9.1 关键术语478 12.9.2 习题479 12.9.3 动手实践479 12.9.4 参考文献482 第13章 服务器端开发:Node.js483 13.1 Node.js简介483 13.1.1 Node的优点483 13.1.2 Node的缺点487 13.2 Node的初步使用489 13.2.1 简单的Node应用程序489 13.2.2 添加Express490 13.2.3 环境变量492 13.3 在Node中创建API493 13.3.1 简单的API493 13.3.2 增加路由494 13.3.3 将路由功能分离成模块495 13.4 创建CRUD API497 13.4.1 向API传递数据498 13.4.2 API测试工具 499 13.5 使用Web套接字500 13.6 视图引擎502 13.7 无服务器方式504 13.7.1 何谓无服务器505 13.7.2 无服务器计算的优点506 13.7.3 无服务器技术506 13.8 本章小结508 13.8.1 关键术语508 13.8.2 习题508 13.8.3 动手实践508 13.8.4 参考文献510 第14章 使用数据库512 14.1 数据库和网络开发512 14.1.1 数据库在Web开发中的 作用513 14.2 管理数据库513 14.2.1 命令行界面515 14.2.2 phpMyAdmin515 14.2.3 MySQL Workbench517 14.2.4 SQLite工具518 14.2.5 MongoDB工具518 14.3 SQL518 14.3.1 数据库设计518 14.3.2 SELECT语句521 14.3.3 INSERT、UPDATE和DELETE 语句523 14.3.4 事务524 14.3.5 数据定义语言525 14.3.6 数据库索引和效率525 14.4 在PHP中使用SQL527 14.4.1 连接数据库527 14.4.2 处理连接错误530 14.4.3 执行SQL查询530 14.4.4 处理查询结果531 14.4.5 释放资源并关闭连接534 14.4.6 使用参数535 14.4.7 使用事务537 14.4.8 设计数据访问540 14.5 NoSQL数据库543 14.5.1 为什么选择(或不选择) NoSQL543 14.5.2 NoSQL系统分类544 14.6 在Node中使用MongoDB547 14.6.1 MongoDB特性547 14.6.2 MongoDB的数据模型548 14.6.3 使用MongoDB Shell548 14.6.4 在Node.js中访问MongoDB 数据549 14.7 本章小结555 14.7.1 关键术语555 14.7.2 习题556 14.7.3 动手实践556 14.7.4 参考文献559 第15章 状态管理560 15.1 Web应用程序中的状态问题560 15.2 在HTTP中传递信息562 15.2.1 通过URL传递信息562 15.2.2 通过HTTP传递信息563 15.3 cookie565 15.3.1 cookie的工作原理565 15.3.2 在PHP中使用cookie566 15.3.3 在Node和Express中 使用cookie567 15.3.4 持久cookie最佳实践568 15.4 会话状态569 15.4.1 会话状态如何工作570 15.4.2 会话存储和配置571 15.4.3 PHP中的会话状态572 15.4.4 Node中的会话状态574 15.5 缓存574 15.5.1 页面输出缓存575 15.5.2 应用程序数据缓存576 15.5.3 Redis作为缓存服务578 15.6 本章小结581 15.6.1 关键术语581 15.6.2 习题581 15.6.3 动手实践581 15.6.4 参考文献584 第16章 安全585 16.1 安全原理585 16.1.1 信息安全585 16.1.2 风险评估及管理586 16.1.3 安全策略587 16.1.4 业务连续性588 16.1.5 设计安全590 16.1.6 社会工程学591 16.1.7 认证因素592 16.2 Web的认证方式593 16.2.1 HTTP基本认证593 16.2.2 基于表单的认证594 16.2.3 HTTP 令牌认证594 16.2.4 第三方认证596 16.3 密码学599 16.3.1 替换密码600 16.3.2 公开密钥密码学601 16.3.3 数字签名603 16.4 HTTPS604 16.4.1 SSL/TLS握手605 16.4.2 证书和证书颁发机构605 16.4.3 迁移到HTTPS 608 16.5 安全最佳实践610 16.5.1 凭据存储610 16.5.2 系统监视616 16.5.3 审计和攻击自己618 16.6 常见的威胁向量618 16.6.1 暴力攻击618 16.6.2 SQL注入攻击619 16.6.3 跨站脚本攻击620 16.6.4 跨站请求伪造624 16.6.5 不安全的直接对象引用624 16.6.6 拒绝服务攻击626 16.6.7 安全性错误配置626 16.7 本章小结628 16.7.1 关键术语629 16.7.2 习题630 16.7.3 动手实践631 16.7.4 参考文献632 第17章 DevOps与托管634 17.1 DevOps:开发和运维634 17.1.1 持续集成、交付和部署634 17.1.2 测试635 17.1.3 基础设施即代码637 17.1.4 微服务架构638 17.2 域名管理639 17.2.1 注册域名640 17.2.2 更新域名服务器641 17.2.3 DNS记录类型642 17.2.4 反向DNS644 17.3 Web服务器托管选项644 17.3.1 共享托管644 17.3.2 专用托管646 17.3.3 主机托管646 17.3.4 云托管647 17.4 虚拟化647 17.4.1 服务器虚拟化647 17.4.2 云虚拟化651 17.5 Linux及Web服务器配置652 17.5.1 配置652 17.5.2 启动和停止服务器653 17.5.3 连接管理653 17.5.4 数据压缩655 17.5.5 加密和SSL655 17.5.6 管理文件所有权和权限657 17.6 请求和响应管理657 17.6.1 在一台Web服务器上管理 多个域658 17.6.2 处理目录请求659 17.6.3 响应文件请求660 17.6.4 URL重定向661 17.6.5 使用.htaccess管理访问663 17.6.6 服务器缓存665 17.7 网络监控665 17.7.1 内部监控666 17.7.2 外部监控667 17.8 本章小结667 17.8.1 关键术语667 17.8.2 习题668 17.8.3 动手实践668 17.8.4 参考文献 670 第18章 工具和流量671 18.1 搜索引擎的历史及剖析671 18.1.1 搜索引擎概述671 18.2 网络爬虫和抓取工具672 18.2.1 抓取工具674 18.3 索引和反向索引675 18.4 PageRank和结果排序676 18.5 搜索引擎优化677 18.5.1 标题678 18.5.2 元标签678 18.5.3 URL680 18.5.4 站点设计681 18.5.5 站点地图682 18.5.6 锚文本682 18.5.7 图像683 18.5.8 内容683 18.5.9 黑帽SEO684 18.6 社交网络687 18.6.1 我们是如何到达这里的687 18.7 社交网络集成689 18.7.1 基本的社交媒体存在感689 18.7.2 Facebook的社交插件690 18.7.3 Open Graph693 18.7.4 Twitter的小部件694 18.7.5 高级社交网络集成697 18.8 内容管理系统697 18.8.1 被管理网站的组件697 18.8.2 CMS类型698 18.9 WordPress概述699 18.9.1 帖子和页面管理700 18.9.2 所见即所得编辑器701 18.9.3 模板管理701 18.9.4 菜单控件702 18.9.5 用户管理和角色702 18.9.6 用户角色703 18.9.7 工作流和版本控制704 18.9.8 资产管理705 18.9.9 搜索706 18.9.10 升级和更新707 18.10 WordPress技术概述707 18.10.1 安装707 18.10.2 文件结构708 18.10.3 WordPress命名法709 18.10.4 WordPress模板层次结构710 18.11 修改主题710 18.11.1 更改主题文件712 18.12 网站广告基础712 18.12.1 网站广告101713 18.12.2 网站广告经济714 18.13 支持工具和分析工具715 18.13.1 搜索引擎网站管理员 工具716 18.13.2 分析工具716 18.13.3 第三方分析717 18.13.4 性能调整和评级718 18.14 本章小结721 18.14.1 关键术语722 18.14.2 习题723 18.14.3 动手实践724 18.14.4 参考文献726
|
| 內容試閱:
|
前 言 Fundamentals of Web Development, Third Edition 欢迎阅读本书。本书旨在涵盖现代Web开发所需的各类主题,适用于计算机专业的高年级学生。书中绝大部分内容在作者向计算机专业一年级学生以及非计算机专业学生教授Web开发原理时都曾使用过。 在规划本书时,我们面临的困难之一是,教授Web开发的方式多种多样,并且面向的学生群体也不同。一些教师只面向三年级学生教授一门专注于服务器端编程的课程,另一些教师教授两门或两门以上全面的Web开发课程,而其他教师则可能只在网络、人机交互或毕业设计课程背景下间接地讲授Web开发。我们致力于编写一本能够支持所有这些教学场景的教科书。 什么是Web开发 Web开发是一个根据受众和上下文不同而具有不同含义的术语。在实践中,Web开发需要具有互补但不同专业知识的人员朝着同一目标共同努力。图形设计师可能会将Web开发看作一个良好图形设计策略的应用,而数据库管理员可能会将其视为一个底层数据库的简单接口。软件工程师和程序员可能会将Web开发视为具有阶段性和可交付性的经典软件开发任务,而系统管理员看到的则是一个必须进行保护以免遭受攻击的系统。由于有这么多不同的用户群体和术语,因此人们对Web开发的理解难免不够深入。很多时候,为了深入讲解Web开发的某个方面,其他的原理被彻底忽略,致使学生没有意识到他们的技能在整体框架中的定位。 要真正明白Web开发需要从多个视角进行理解。正如你将看到的,网站的设计和布局与代码和数据库密切相关,图形的质量与服务器的性能和配置有关,而系统的安全性贯穿于开发的各个方面。所有这些看似独立的方面都是相互关联的,因此,无论从事哪种类型的Web开发工作,Web开发人员都应该对所有方面有基本的了解,即使仅拥有少数领域的专业知识。 第3版有什么变化 本书第1版主要写于2013年的上半年,于2014年年初出版。第2版主要写于2016年的上半年,于2017年年初出版。本版本主要写于2020年的上半年。 本书的重点始终放在Web开发的概念和实践基础上。因此,本书的许多主题在今天仍与2013年编写第1版时一样重要。尽管如此,Web开发领域一直在不断变化,自第1版和第2版问世以来,Web开发的底层技术发生了许多改变。第3版既反映了这些最新变化,也反映了那些在Web开发中持久不变的基本内容。 在过去的十几年中,现实世界Web开发中的关键技术堆栈已经不再是像PHP、JSP和ASP.NET这样的后端技术了。虽然这些技术仍然很重要,但JavaScript前端技术已经成为当今大多数Web开发人员的关注焦点。第3版反映了现实世界实践中的这种转变。 本版中的一些关键更新包括: 根据用户反馈修订了现有章节。2018年的教师焦点小组提供了关于哪些内容缺失或哪些内容需要改进的有用信息。来自其他教师电子邮件的建议和学生的反馈也促成了现有内容的修订。 对反映当前Web开发方法的各种主题进行了更新、扩展或新增。包括CSS预处理器、CSS设计原则、ES6+语言附件、Web和浏览器API、React、Node、TypeScript、SQLite和NoSQL数据库、GraphQL、无服务器计算、高速缓存、新的安全漏洞、JWT身份验证、DevOps、持续集成/部署以及微服务架构。 增强了对当代JavaScript的介绍。本书关于前端和后端JavaScript有五章内容(而第2版只有三章)。 新增专门介绍React和Node的章节。它们都已成为当代Web开发人员的技能。 在大多数章节中增加了新的教学模块。包括“知识测试”和“基本解决方案”。前者是一个简短的练习,帮助学生应用从当前章节所学知识,而后者则为读者提供完成常见任务的快速指导。 修改或替换了大部分章末的项目。 本书的特点 为了帮助学生掌握Web开发的基础知识,本书具有以下特点: 涵盖了Web开发整个范围的概念及实践。Web开发是一门很难教授的课程,因为它既涉及独立于技术的广泛理论内容,又涉及特定于某项专业技术的实践内容。本书全面涵盖了Web开发领域的概念和实践。 全面覆盖现代互联网开发平台。要创建任何一种实用的互联网应用,读者都需要对单一特定的互联网开发平台进行详细的了解和实践。本书涵盖HTML、CSS、JavaScript和两个服务器端堆栈(PHP和MySQL、Node和MongoDB)。本书还涵盖了关键的概念和基础架构,如Web协议和体系结构、安全性、托管提供和服务器管理等,这些是所有Web开发课程的重要学习内容。 聚焦于当今世界的Web开发现状并预测未来的发展趋势。在过去的十几年里,Web开发领域发生了巨大的变化。从零开始创建的站点越来越少,取而代之的是,许多开发人员都利用了现有的高级框架和环境。本书介绍了Bootstrap、React和WordPress等核心框架。 复杂、真实且引人入胜的案例研究。本书没有使用简单的“Hello World”风格的Web项目,而是广泛使用了以下案例研究:艺术品商店、旅游照片分享社区、股票交易网站和电影评论网站。每个案例都包含视觉设计、图像和数据库等配套资源。我们发现,有了这些引人入胜并且真实的案例,学生更有热情,也会更加努力学习。 内容呈现适用于视觉导向型学习者。作为一名资深教师,作者很清楚,现在的学生往往不愿意阅读大段文字。因此,我们尽量图文并茂地讲授复杂的思想。 本书内容是作者近30年教授Web开发的课堂经验的凝练(包括在学院、大学以及成人继续教育环境中的教学)。本书的内容也反映了作者为众多国际客户进行Web开发工作的丰富经验。 在线提供额外教学内容。本书没有使用冗长的编程清单来教授思想和技术,而是结合了插图、简短的编码清单以及单独的实验练习。书中没有包含循序渐进的步骤说明,但它们可以在www.funwebdev.com上在线获得。书中的代码清单以及项目的初始文件都可以在GitHub上获得。 为学生提供完整的自学资源。每章基本上包括学习目标、专业提示、关键术语、知识测试、基本解决方案、章末的习题以及不同的动手实践。 本书的结构 本书的全部章节可以分为三大部分。 客户端基础知识(第1~11章)。第一部分介绍了前端Web开发人员所需的基础知识,包括Web开发基础(第1章)、Web工作原理(第2章)、HTML(第3章和第5章)、CSS(第4章和第7章)、网页多媒体(第6章)和JavaScript(第8~11章)。 服务器端开发基础(第12~15章)。尽管基于JavaScript的开发越来越重要,但服务器端开发仍然是大多数Web开发课程所教授的基本技能。第12章(PHP)和第13章(Node)介绍了两种最流行的服务器端环境。第14章介绍了数据库驱动的Web开发,第15章介绍了状态管理。 专业主题(第16~18章)。当代Web开发已经成为一个非常复杂的领域,除了基本主题,不同教师可能会有不同的兴趣领域。为此,本书提供了专业章节,介绍各种不同的兴趣领域。第16章介绍了Web安全这个重要主题。第17章重点介绍了Web服务器,包括DevOps、托管选项以及服务器配置等。第18章介绍了搜索、社交媒体集成、内容管理、广告以及支持工具和分析工具等。 本书的教学路径 教授Web开发有许多方法,本书适配其中的大多数方法。需要注意的是,本书有太多的内容,很难在一个学期的课程中覆盖。本书的设计特点是,允许不同教师在当代Web开发的不同主题中,规划自己独特的教学路径。 尽管你也可以按照主题自行规划课程,但我们确实提供了一些关于这些内容的建议教学路径,下面详细介绍。 单门课程覆盖所有Web开发主题。许多计算机专业关于Web开发只能开设一门课程。这通常是一门中级或高级课程,要求学生具有一定的自学能力。在这种情况下,我们建议课程涵盖第1~5、8、9、12(或13)、14和16章。 面向入门学生的专注于客户端的课程。一些计算机专业开设一门对编程能力要求较低的Web课程,它可能对非专业学生开放,或者作为专业学生的Web开发入门课程。对于此类课程,我们建议涵盖第1~7章。如有需要,可以使用第8章和第9章介绍的客户端脚本。 面向中级学生的专注于前端的课程。对于关注前端开发的课程,可以涵盖第1~11章、第13章以及第14章的部分内容。 专注于基础设施的课程。在一些计算机专业中,其重点不是Web编程的细节,而是将Web技术集成到组织内的整个计算基础设施中。此类课程可以涵盖第1~4、8、13、16和17章,并可选择性地包含第6、14、15和18章中的部分主题。 给教师的建议 Web开发课程被称为“不可教授的”课程,事实上,教授Web开发面临着许多挑战。我们相信,使用本书将使Web开发教学的挑战性大大降低。 你可以在www.pearsonhighered.com/cs-resources/中访问如下教师资源: 有吸引力并且全面的PowerPoint演示文稿(每章一个)。 所有案例研究的图像和数据库。 章末项目的解决方案。 试题库中的附加问题。 书中使用的许多代码清单和示例都可以在GitHub(github.com/funwebdev-3rd-ed)上找到。 给学生的建议 在GitHub(github.com/funwebdev-3rd-ed)、出版商的资源网站(www.pearsonhighered.com/cs-resources/)和本书网站(www.funwebdev.com)上有各种各样的学生资源。这些资源包括: 按章节组织的所有代码清单。 所有章末项目的初始文件、图像和数据库脚本。 所有“知识测试”练习部分的初始文件和解决方案。 各章实验练习的说明。 所有实验的初始文件。 不同章节主题的视频讲解。 为什么撰写本书 ACM(美国计算机协会)针对计算机科学、信息系统、信息技术和计算机工程制定的教学大纲,建议至少开设一门专门讲授Web开发的课程。因此,几乎每所高等院校的计算机专业都开设至少一门Web开发课程。 尽管这种课程设置很普遍,但我们却找不到一本适合这些课程的教材,既要涉及Web的理论基础,又要涉及现代Web开发的实践。在计算机教育研究文献中,有很多关于这种缺失的抱怨。虽然有很多介绍HTML和CSS的教材,当然也有很多专门介绍特定Web技术的专业书籍,但其中许多在很大程度上并不适合于计算机专业的学生。我们认为,教师越来越需要一本指导学生使用现代互联网开发平台和框架开发实际的、企业级的Web应用程序的教材,而不是一本说明如何使用HTML和JavaScript创建具有非常基本的服务器端功能的简单页面的教材。 本书旨在满足这一需求。它以一种现代的方式涵盖了ACM Web开发必需的主题,这种方式与Web开发的当代最佳实践紧密相关。它基于我们自1997年以来教授各种Web开发课程的经验,在Web开发行业的实际工作经历,在计算机教育文献中已发表的研究成果,以及与世界各地同行的交流。我们希望你能发现,这本书确实满足了你对Web开发教材的需求! 致 谢 Fundamentals of Web Development, Third Edition 这部鸿篇巨制,凝聚了许多人的心血,我们满怀感激。首先我们特别感谢Matt Goldstein,他曾是Pearson前两个版本的采购编辑,他支持并指导了此书推向市场的整个过程。Tracy Johnson是计算机科学方向的内容开发经理,指导本版通过新的电子优先方式进行出版。Louise Capulli再次出色地担任项目经理,在挑剔的作者与产品团队间搭建沟通桥梁。Pearson的Carole Synder在整个写作和制作过程中也做出了贡献。我们要感谢Integra软件服务公司的Pradeep Subramani及其团队在后期制作方面所做的工作。我们还要感谢校对员Rose Kernan,她确保文字和插图能够共同讲述一个连贯的故事。 审稿人帮助确保教材不仅仅反映作者的观点。才华横溢的审稿人——皇家山大学的Jordan Pratt对本书进行了不可估量的改进。许多热心的学生对实验和讲义材料提供了富有启发性的反馈,其中包括:Farsos Bulsara、Raj Dutta、Hamid Hemani、Peter Huang、Jason Hutson、Andrews Juchem、Sarfaraz Kermali、Shuntian Li、Robert Martin、Brett Miller、Peter Morrison和Renato Niro。事实上,应该在这里列出我们过去五年里教过的所有学生,因为是他们提升了我们的见解,并在我们关于Web开发教学思想的演变过程中充当了非自愿的实验对象。 还有很多人帮助引导我们的思路、提供建议,或让我们的行政和教学工作不那么繁重。虽然我们不能感谢所有人,但Randy Connolly特别感谢Brigitte Jellinek邀请他于2017年在萨尔茨堡应用科学大学度过了一个学期,这为本书中的许多更新提供了早期灵感。我们也要感谢所有花时间给我们发邮件的教师,他们针对前两个版本提供了很多反馈。他们的赞扬、改进建议、对错误或遗漏的指正一直非常受欢迎,并且这些反馈让本书变得更好。 我们非常感谢那些为本书所使用的旅游照片案例研究贡献照片的人,他们是Robert Boschman、Alexander Connolly、Norman Connolly、Mark Eagles、Sonya Flessati、Emily Girard、Mike Gouthro、Jordan Kidney、Roy Kuhnlein、Jocelyn Sealy。在本书中,我们的艺术品案例研究得以利用荷兰国立博物馆、保罗·盖蒂博物馆和华盛顿美国国家美术馆东馆秉持公益精神且慷慨的开放内容政策。 从2012年5月本书的起笔开始,一直到2020年的下半年本书收尾,Janet Miller博士提供了强有力的鼓励、理解和反馈,Randy Connolly将永远心存感激。拥有计算机科学专业硕士学位的Joanne Hoar一直是Ricardo Hoar的灵感来源,对此他表示感谢。最后,我们要感谢我们的孩子们,Alexander Connolly、Benjamin Connolly、Mark Miller、Hann Miller、Archimedes Hoar、Curia Hoar和Hypatia Hoar,他们在这段时间里很少见到父亲,但始终被我们牵挂于心。
译者序 Fundamentals of Web Development, Third Edition 我们生活在一个被万维网深刻定义的时代。从信息获取、社交互动、在线购物到企业运营、公共服务、科技创新,Web应用无处不在,成为连接人与人、人与信息、人与服务的重要枢纽。理解Web如何运作,掌握构建Web应用的基本技能,是数字时代一项重要的基础能力。 然而,Web开发涉及领域广泛并且日新月异。初学者面临各种技术名词、各种平台系统时,常常感到迷茫,不知从何下手。正如本书所述,Web开发是一个建立在互联网基础上、增加了新的协议和标准、提供客户机-服务器交互功能的生态系统。这个生态系统不但内容涉猎广,而且还在不断发展进化。各种新技术、新框架和新平台层出不穷,并且创造了众多新的应用领域。 为了让初学者了解这个庞大的生态体系,为自己的特定目标选择合适的技术和框架,开发合适的Web应用,亟需一本能理清相关概念,提供一条清晰、系统、实用的学习途径的教材。本书结合作者二十多年教授Web开发的课堂经验以及进行Web开发的工作经历,按照由浅入深、从概念到技术、从原理到实践、从目标到解决方案的思路,系统全面地讲授了Web开发的各个主题,能满足不同读者对相关内容的专业需求。 本书内容可以分为三大部分: 第一部分是客户端基础知识,包括第1~11章。这部分介绍了前端Web开发人员所需的基础知识,包括Web开发基础(第1章)、Web工作原理(第2章)、HTML(第3章和第5章)、CSS(第4章和第7章)、网页多媒体(第6章)和JavaScript(第8~11章)。 第二部分是服务器端开发基础,包括第12~15章。这部分主要介绍了Web服务器的运行环境以及开发技术。第12、13章分别介绍了PHP、Node这两种最流行的服务器端环境及开发方法。第14章介绍了数据库驱动的Web开发,第15章介绍了状态管理。 第三部分是Web开发相关的其他重要主题,包括第16~18章。第16章介绍了Web安全主题。第17章重点介绍了Web服务器的托管、配置等内容。第18章介绍了搜索、社交媒体集成、内容管理、广告以及支持和分析工具等主题。 本书具有以下特点: 内容全面系统,涵盖了Web开发整个生态的概念及实践。本书既涉及通用的概念原理,又涉及常用的典型技术和实践;既包括主流的客户端技术HTML、CSS、JavaScript 和典型的服务器端堆栈,又包括其他一些关键概念和主题,并涵盖了当前典型的互联网开发平台。 技术现代且具有前瞻性。Web开发技术发展非常快,目前的开发大多利用了现有的高级框架和环境,本书较为全面地介绍了Bootstrap、React和WordPress等典型的常用框架。 案例研究详细且实用。本书使用了艺术品商店、旅游照片分享社区、股票交易网站、电影评论网站等真实案例,内容全面,支撑项目的素材完善,不仅具有吸引力,而且能有效辅助学生动手复现案例。 为老师提供丰富的教学资料。本书提供了编码清单、实验练习等丰富的辅助材料。书中的代码清单以及项目的初始文件都可以在GitHub上获得。 为学生提供完整的自学资源。每一章基本上包括学习目标、专业提示、关键术语、知识测试、基本解决方案、习题以及动手实践,便于学生自学。 这些特点使得本书不仅适用于零基础或基础薄弱的Web开发初学者,也适用于那些希望系统梳理Web基础知识的自学者;不仅适用于计算机相关专业需要学习Web技术基础的学生,也适用于对构建网站或Web应用有浓厚兴趣,希望掌握核心技能的读者。 在翻译本书的过程中,译者团队成员不仅对书中涉及的内容进行了深入研究,而且参考了国内外大量的相关资料。针对书中涉及的专业术语、系统命令、软件工具等内容的译文,我们参考了国内同行的习惯用法。我们努力让译文在保持概念准确的同时,能清晰反映作者真实的含义。 参加本书翻译工作的人员包括:刘海燕、姜洪伟、常成、武卉明、王维锋、李冠男、陈颖颖、尚世锋、李红领、杨健康、张增、王立平等。刘海燕对全书进行统稿和校稿。鉴于译者水平有限,书中难免存有错误和疏漏之处,敬请读者批评指正。
|
|