精华内容
下载资源
问答
  • 前端项目实战

    2018-02-10 14:21:10
    主要模仿的是一个做衣服的前端首页和购买,有图片轮播效果,有放大镜效果,还有字体位移效果!
  • 小编收集了前端开发11个项目开发教程,大企业项目实战教程+文档源码。总共5个g资料统统拿走!转发+关注并xs小编:“资料”全部打包带走!本套课程是非常完整的Web前端学习课程,对与想学习Web前端的同学推荐学习本套...

    小编收集了前端开发11个项目开发教程,大企业项目实战教程+文档源码。总共5个g资料统统拿走!

    转发+关注并xs小编:“资料”全部打包带走!

    本套课程是非常完整的Web前端学习课程,对与想学习Web前端的同学推荐学习本套课程!

    项目一:小米官网

    首先选择小米官网为第一个实战案例,是因为刚开始入门,有个参考点,另外站点比较偏向 目前的卡片式设计,实现常见效果。目的为学者练习编写小米官网,熟悉 div+css 布局。

    项目截图:

    4d92cd871d8f1790aa97a9cde4cf8210.png

    项目二:响应式

    此站点特效较多,所以通过练习编写次站点,学生可以更多练习 CSS3 的新特性过渡与动画 的实现,并且可以很好的练习 div+css 布局。

    项目截图:

    6a6e89d357ce1317cd258024d2057cc4.png

    项目三:米课网

    此站点为响应式站点,在目前常见站点中,响应式设计类站点是非常多的,而且大部分公司 的站点都需要支持响应式,所以,通过练习次站点,学者可以熟悉响应式这点的设计流程和 实现方式。

    项目截图:

    2179edbac320b3b5db05ab5a58801b42.png

    项目四:美食网(移动端)

    项目为移动端项目,针对 M 站进行布局处理,项目为手机外派类 web 站点,功能包含,首 页店铺展示,店铺餐饮列表,具体视频详情等页面

    项目截图:

    ccaf8f714835ddb0aa470214bef5f54b.png

    项目五:IMMERSE

    音乐播放器 本项目为音乐类项目,主要实现音乐首页展示,今日推荐类别,歌曲列表,歌曲播放及歌手 列表和搜索功能。主要练习 Vue 的基础应用和组件如何设计。项目如何构架与测试。通过本项目可以让学者更快的熟悉 Vue 框架的使用。并且熟练的构建整个项目需求的架构 技术栈:Vue + Vue-Router + Axios + Flex + ES6

    项目截图:

    fe651781b9243a5080ed0d478fb2affc.png

    项目六:登录注册认证系统

    登录认证系统基本上是每个项目的必备品,我们单独拿出来,做详细讲解,并形成一个独立 的项目,这样大家在日后的开发中,可以随时可拔插式增加到自己的项目中 技术栈:React + Redux + React-Router + BootStrap + Axios + Redux-Thunk + 工具 库(lodashclassnames 等) 项目截图:

    7cada8a974dd0344ff82d9b3eedef153.png

    项目七:Ego 商城后台管理系统

    商城后台管理系统是目前非常常见的管理系统,当然,类似的管理系统包含内容管理、产品 管理、人员管理等系统都是类似的,所以我们通过此后台系统了解大部分的系统的常见功能, 主要针对产品、内容、规格参数等进行增删改查的操作 技术栈:Vue + Vuex + Vue-Router + Element UI + Axios + 权限管理 项目截图:

    d2ffd47b438c1e1908eeef5d76583926.png
    b748459311ff1287a64d0af5de183b4b.png
    19748f39a4c77c55addc547cf1249de1.png

    项目八:微信小程序-蓝莓派社区

    此阶段的内容为微信小程序开发,本阶段并非以基础知识点开始入手讲解,基于学者经历过 以上的学习,在此时已经掌握项目框架,包含常见的一些实现规范,所以,这里我们将直接 讲解项目,根据项目需求的效果使用微信小程序技术实现对应功能。

    技术栈:微信小程序

    项目功能:

    项目截图:

    3aed87c24703b253ee3657bb260fe730.png

    项目九:推广类移动端页面 这是一款测试类产品,用户输入名称可以根据用户名名称进行分析,给出不同的运势结果, 并且项目是嵌套在 app 中的,通过 iOS 和 Android 的 webview 进行加载

    技术栈:Swiper+jQuery+REM+Less

    项目截图:

    88ef07460ca4570dc262ebc6d40f3bae.png

    项目十:蓝莓派社区

    本项目名称为蓝莓派,主要为音乐社区类型。包含较多的交互功能,例如滑动门,雪碧图使 用,模态框,瀑布流和焦点轮播图等效果。当然,前后端交互也是不可少的,主要理解前后 端交互流程与练习各种交互实现。

    技术栈:JavaScript+jQuery+REM+响应式

    项目截图:

    936f495f45ef1cb13be4c5c264a81614.png
    2c86e9a72e9aa61c1112125a9143f840.png

    项目十一:宜居

    本项目是租房类 WebApp,注重移动端布局,功能的实现。其中包含,登录注册、首页展示、 城市选择、搜索功能、详情展示、上拉加载等功能。

    技术栈:React + React-Router + Redux + Fetch

    项目截图:

    d86099cb40bf56b0cc7ec4aae838caa1.png

    心动了吗?心动不如行动,赶快做起来吧!

    原文:https://www.bilibili.com/read/preview/8042633

    展开全文
  • 从 Web 诞生到如今,Web 前端技术已经逐步成长为一个丰富且有活力的技术世界。随着互联网行业发展格局的频繁演进以及产品策略的不断调整,不同阶段的业务在技术选型、前端性能优化、用户交互体验上不断产生新的需求...
    百度Web前端开发实战案例解析


    从 Web 诞生到如今,Web 前端技术已经逐步成长为一个丰富且有活力的技术世界。随着互联网行业发展格局的频繁演进以及产品策略的不断调整,不同阶段的业务在技术选型、前端性能优化、用户交互体验上不断产生新的需求,不断地对 Web 前端技术提出新的要求。

    10 月 27 日,82 期百度技术沙龙,邀请了数位百度前端技术部 Web 前端资深研发工程师,从 Web 前端技术出发,通过五个主题,立足现在面向未来,由内到外地分享百度在搜索组件化的探索、搜索体验增强、开放 Web 速度优化及开放 Web 未来发展发面的技术沉淀和积累。

    搜索组件化探索与实践

    首先进行分享的是百度前端技术部资深研发工程师陈骁带来的《搜索组件化的探索与实践》。

    为什么搜索要做组件化?

    据陈骁介绍,最开始的百度搜索移动端的前端架构是从 PC 时代迁移过来,服务器端使用 Smarty 来渲染模版,实现前后端分离。前端使用 Zepto 来完成交互逻辑,但是它的扩展性比较有限,难以实现对 HTML、CSS 代码的组件化管理,随着移动端的交互形式越来越复杂,原本的方案出现了局限性。

    于是,组件化应运而生。组件化是把一些可复用的单元提取出来,通过对几个组件的管理,实现对整个搜索结果页样式的控制,提高开发的效率和横向团队整体升级的效率。

    目前百度已经有了非常多的组件化解决方案,包括 Lavas 和 Reac t。可以具体到组件语法、基础框架以及同构区块。

    如下图所示,组件语法包括四部分:

    • Template:组件代理结构
    • 浏览器端:组件前端逻辑
    • Style:前端样式
    • Config:同构逻辑


    百度Web前端开发实战案例解析


    前三部分基本能够覆盖组件的常用语法,而同构在服务器端和浏览器端都能执行,主要有 props、data、components、computed 等。

    那么这个组件代码怎么在线上跑起来呢?

    首先会在线下通过编译器,把它编译成 PHP、JavaScript 两份原码。PHP 的编译产物完全使用 PHP 的语法,可以在后端形成一个 Server Runtime,在这个过程中,也能够把 PHP 的编译产物渲染成字符串,通过网络传输到浏览器端。而在浏览器端运行时可以用编码产物 Javascript 的组件,渲染成可操作的 HTML 代理结构,包括它的事件和交互。

    其中的难点在于怎么把一个组件代码编译成在 PHP、在 JS 都能跑的组件代码。百度会做对于模板和一些表达设计的处理。例如,模板代码有一个文本节点,有一个自定义组件,在编译的过程中,会利用编译器把它转化成抽象语法树,形成树的结构,每个节点都有一些属性和信息,利用语法树的结构和属性信息,就可以通过代码生成器分别生成 PHP 和 JS 的代码。


    百度Web前端开发实战案例解析


    这里还有一个问题,为什么需要一个同构区块呢?这是因为同构区块可以很好控制服务器端能执行的代码,方便语法解析。另外,百度对同构代码块进行语法限制,以保证服务器端的稳定性,也可以更加方便解析成想要的 PHP 代码。

    通过改造,组件化渲染框架不仅可以使得效率提升,保证了体验一致性,而且进行了横向升级降低成本。

    性能优化

    针对服务器端的渲染性能,百度做了非常细致的优化:

    • 在框架层,对渲染流程进行了简化,添加了缓存;
    • 在基础组件层,对控制的简单组件进行编译优化;
    • 在业务层,提供先验工具、准入规范,线上监控和报警,并提供 a-nossr 指令。

    那么组件是如何在服务器端渲染成想要的 HTML 字符串呢?

    如下图所示,会经过以下步骤:首先,加载组件的配置,创建组件的实例。在实例的创建过程中,对这个组件所有的数据进行初始化,包括一些特征和计算属性,得到初始化状态以后,再渲染出虚拟 DOM 树,把整个组件节点数渲染成一个实例的形式,用虚拟 DOM 树渲染成 HTML 字符串。

    百度Web前端开发实战案例解析


    与此同时,百度搜索对整个渲染的过程进行了简化。在框架层,通过创建虚拟 DOM,减少了一次递归,也减少了在线上运行时的逻辑。在基础组件层,百度对横向团队能够完全控制的一些简单组件进行了优化。利用 HTML 编译器编译成语法树,语法树对它每一个 AST 节点进行优化,通过将 Tag 直接定义为普通的 DOM 节点的方法,生成最后想要的函数代码。

    百度Web前端开发实战案例解析


    框架层:渲染流程简化


    百度Web前端开发实战案例解析


    简单组件编译优化

    目前进展

    目前,百度提供搜索组件化的工具。比如搜索 Web 无障碍规划、搜索性能准入规范、搜索设计规范;服务方面包括性能监控、前后端异常监控等;运行方面提供 VSL 语音交互框架帮助开发者开发一些语音交互逻辑;工程方面提供搜索敏捷平台,帮助开发者直接完成联调、提测、上线;在应用方面,有卡片、图片搜索、咨询搜索、移动端的首页,还有一些独立的站,包括百度体育和百度招聘。

    百度Web前端开发实战案例解析


    搜索组件化技术全景图

    移动体验标准化建设

    第二个 Session 是由百度前端技术部资深前端工程师刘浪宇带来的《移动体验标准化建设》。

    极致的用户体验是 Web 产品所追求的,那么什么是好的用户体验,如何去量化用户体验做到好的体验呢?首先需要有一套清晰的体验指导标准,然后再去落地。

    移动体验指南

    移动体验指南是基于移动 Web 生态提出一套通用的体验指导规范,目的是更好地服务于用户及产品的系统,为广大用户提供优质的体验。从用户的体验层次、交互和移动 Web 现状,百度归纳出六个纬度:

    第一,快速的信息呈现。速度快慢直接影响用户对站点的体验评级,所以让主体内容快速呈现给用户才是优质的体验必需的。

    第二,设计交互层面强调一致性。一致的设计交互可以利用用户的学习经验,降低学习和使用的成本。

    第三,好产品需要做到让用户低成本、高效地完成所有交互操作,整体操作要清晰无阻,带给用户最流畅的体验。

    第四,内容强调优质阅读观感。站点的内容可读性、内容本身质量是否能够达到,都是优质的体验所必需的。

    第五,情感层面有两点,首先是愉悦的情感认知,其次是让用户对站点信任,页面是否安全、是否及时告知流量信息等等。

    第六,关于强健的场景适配,优秀的站点应当适合于不同的人群和宿主环境。

    移动体验检测平台

    有了体验指南,如何快速知道站点存在哪些问题?这就需要体验检测平台 Radar。

    Radar 的最底层是 Headless Chrome,百度通过协议接口可以非常快捷地操作这个浏览器。中间的运行是基于谷歌开源的一个网页工具 Lighthouse 。它主要有两个内容,第一是网页数据收集,通过数据分析获得数据,按照规则的需要,对于这些数据进行分析后输出想要的结果。第二,Radar 的核心是非常多的规则,主要分两类,一类是普通的,一类是交互的。

    刘浪宇以交互的规则为例,详细阐述了一个规则是如何实现的。如下图,交互的规则主要分为两部分,第一是场景识别,第二是交互分析。举一个比较简单的例子,当用户在页面看到一个输入框时,觉得点击可以直接输入是一个良好的体验。那么如何量化这个规则呢?首先是场景识别,找到在这个页面中看起来像评论输入框的元素。然后找一些特征,从海量数据里面标注、提取一些通用特征之后为这个场景建立特征库。之后再基于场景所需要的特征,进行网页结构化数据提取。

    百度Web前端开发实战案例解析


    Radar 规则架构(交互类规则为例)

    接下来这些场景元素就要进行交互分析,首先进行深度筛选然后进行交互操作。以模拟屏幕的点击举例,点击之前用户会看页面的变动,比如说 DOM 的变动、跳转的变动,然后对变动进行分析,看是否符合预期。

    基于 Custom Elements 标准组件化构建 Web 应用

    第三个主讲人是百度前端技术部资深前端工程师邹淼江,他现场分享了如何高效快速的构建一个体验良好的 Web 应用、基于 Custom Elements 标准的组件化设计、如何提升用户端体验和开发效率。

    首先看自定义标签,自定义标签在功能上逻辑上与 JavaBean 类似,都封装 Java 代码,是可重用的组件代码,并且允许开发人员为复杂的操作提供逻辑名称。另外,自定义标签具有⽀持⽆障碍、提高开发效率、评估性能、对 SEO 良好的特点。

    其中,如何使用自定义标签进行性能评估呢?百度提供了一套搜索引擎的验证工具。比如,符合某一种规则的 Custom Elements,给它标高分,为符合高性能标签。但如果使用 DIV 的方式,搜索引擎没办法知道布局是不是高性能,也没办法知道所对应的 JS 如何实现,如果有了 Custom Elements 的标准,就能清晰地知道这个页面想干什么。

    基于此,我们可以设想:如果完全使用这些 Custom Elements 语义化标签构建 Web 站点可行吗?

    这就需要引入组件化设计。其实目前存在的组件化设计都千篇一律,把一个页面的功能模块以组件树状的形式自由组合,堆积成一个功能的页面或者是模块,这就是组件的结构。具体要求:

    • 每⼀个 Custom Element 是⼀个组件
    • 组件内部实现相应的交互、功能和数据处理逻辑
    • 组件之间逻辑和样式是独⽴隔离的
    • 组件是可以通信的
    • 组件是可复⽤的

    Web Components 标准

    Web Components 是指通过一种标准化的非侵入的方式封装的一个组件。主要标准包括 Custom Elements,Shadow DOM,HTML Templates,HTML Imports 等多个维度的规范与实现。

    • Custom Elements 是提供一种方式让开发者可以自定义 HTML 元素,包括特定的组成,样式和行为。支持 Web Components 标准的浏览器会提供一系列 API 给开发者用于创建自定义的元素,或者扩展现有元素。
    • Shadow DOM 旨在提供一种更好地组织页面元素的方式,来为日趋复杂的页面应用提供强大支持,避免代码间的相互影响。开发者可利用 Shadow DOM 封装自己的 HTML 标签、CSS 样式和 JavaScript 代码。
    • HTML Imports 是一种在 HTML 中引用以及复用其他的 HTML 文档的方式,可以简单理解为常见的模板中的 include 之类的作用。我们可以通过 HTML Import 的形式,直接将做的 Custom Elements 的标签放进 HTML 中进行渲染渲染。


    百度Web前端开发实战案例解析


    Web Components 兼容性

    搜索落地页体验技术及应用

    第四个主题由百度前端技术部前端工程师李兆明讲述。如何更快、更好的将各类搜索结果页面传递到用户端一直以来是百度搜索前端的核心关注点。基于此,李兆明分别从如何让落地页加载更快,如何让搜索结果页和落地页之间切换更加顺滑以及未来的新标准,介绍百度搜索落地页体验技术的探索。

    如何让落地页加载更快

    思路一:提前加载。通过 Resource Hint 提示浏览器预解析域名、建立预连接,甚至进行预渲染。若是不支持的浏览器,则可以通过 JavaScript 模拟一部分。

    思路二:抓取数据。通过开放平台提交数据,由百度来渲染。

    思路三:MIP / AMP。MIP 提供多重措施,让使用 MIP 技术的页面加载速度更上一层楼。例如,CDN 加速服务;使用 MIP 设计的网站没有任何可以阻塞渲染的脚本,所有脚本都在页面主体加载完成后才执行。此外,MIP 要求所有页面都是静态的,如果有需要实时更新的数据需要异步获取,这样设计节省了后端的渲染时间。

    如何把两个页面融合在一起?

    其实,无论有多少优化加载速度的手段,归根结底离不开页面跳转。但是,浏览器跳转相对来说不够平滑,用户体验不够好,能不能把前后两个页面融合到一起呢?

    答案当然是肯定的。李兆明在保证体验、保障安全及保持开放的基础上,讲解了百度前端搜索的解决方案:

    • 保证体验:通过 Iframe 加载页面;通过 PostMessage 等方法实现交互动效。
    • 保障安全:不允许使用外部脚本,需要封装组件审核;通过校验确保 HTML 符合规范。
    • 保持开放:通过 GitHub 追踪开发。

    展望新技术

    在未来,百度搜素将基于域名、Iframe 渲染问题,为开发者带来 Navigation Transition、Promotable Iframe、Portals 及 Web Packaging 新标准,带来最流畅的体验。

    Navigation Transition:页面切换的交互方式。解决了跨域问题,没有 Iframe 渲染的历史包袱。不过前一个页面依然不能控制后一个页面的加载、渲染。iframe 可以提前加载,但是 Navigation Transitions 一定要在用户切换的时候加载。

    Promotable Iframe:与 Iframe 相关,核心代码是 Promotable 的 API,只要调用 Promotable,就会调动页面的一小块,而后调动整个页面及内容。但是这种方法涉及一些生命周期的管理和 JS 的回收问题,是不够安全的实现,而且这样没有解决 CDN 的问题,依然需要改域名。

    Portals:传送门,将一个页面传送另一个页面。这个标准是 Promotable Iframe 的增强,引入了一个新的 HTML 标签 portal,这个标签用来替代 Iframe 显示一块网页,写法和 Iframe 类似。但是它比 Iframe 多一个功能,就是可以通过 “active” 方法激活它。与此同时, portal 的子文档会收到一个 portal zactive 事件,事件中可以拿到它的上级元素,这样又可以把上级元素当成一个 portal 插入回自己的文档流,使得页面切换回去成为可能。

    Web Packaging:解决了 CDN 跨越问题。这个标准包括三方面:签名、打包、加载。如下图,左边内容提供者是站长,缓存的 CDN 类比 MIP 的 CDN ,右边是访问用户,用户浏览我们百度搜索结果页的时候,通过 MIP 的 Cache CDN 提前把数据取过来,用户真正点击的时候,直接从刚才取回来的页面去加载它。由于内容本身是内容提供者提供的,所以他可以对于自己 URL 进行签名。有了这个签名且签名有效的时候,浏览器可以自己显示原始的网址,同时原始的网址可以和原来的服务器进行交互,像通过原网址打开的一样,解决了 CDN 跨域问题。

    百度Web前端开发实战案例解析


    如何通过 Lavas 快速构建 PWA 站点

    最后一个主题的讲师是百度前端技术部资深研发工程师王轶盛为大家介绍如何通过 Lavas 快速构建 PWA 站点。

    PWA

    PWA(Progress Web App)是 WEB 未来的发展方向。从体验上来说,PWA 接近原生 APP,通过 Manifest 技术允许用户快速打开站点并获得沉浸式的体验,通过 Service Worker 能够做到资源预加载和离线可用等从而提升性能和可用性;同时 PWA 又拥有 Web 站点的共同优势:免安装和自动更新。

    但与 Web 站点不同的是,PWA 又具有可靠、快速、黏性等特点:

    第一是可靠。在断网的情况下,PWA 可做到比较友好的离线提示,这个是 PWA 断网的最高级,叫断网可用。

    第二是快速。53% 的用户会放弃加载时间超过 3 秒的网站,越快的加载速度就有越少的用户流失。PWA 提供 Service Worker,确定哪些访问缓存、哪些访问网页,缩短加载时间。

    第三是黏性。黏性是指用户访问过一次,下一次访问是否麻烦。PWA 会用一个半秒的启动动画来保证浏览器首页启动的顺滑。另外,启动之后没有的地址栏、菜单栏,保证用户的沉浸式体验。

    从技术层面讲,PWA 有分为四部分:

    第一是 Service Worker 。定义预缓存、网络拦截和缓存策略。它本身是一个 Worker,有专门的语法,需要 CACHES API,需要注册及更新。

    第二是 Manifest 。这是一个 Json 文件,定义快速入口,启动动画。

    第三是 Web Push and Notification 。是服务器推送给客户端的主动通知。

    第四是 APP Shell 。这并不是新技术,但它是常用的 PWA 架构。简单来说,就是把一个 APP 分成了外壳和内容,用 Service Worker 把外壳缓存起来,将里面的页面进行跳转。

    通过 Lavas 搭建 PWA 站点

    Lavas 包括工具、文档以及对应的解决方案和建站模板,是一个开源的解决方案。Lavas 本身有两部分,Lavas cli 和 Lavas core,内部用 Vue + Vue Router + Vuex 搭建站点,内置两套模板 (basic & app-shell),支持传统模式 SPA 和 SSR 快速渲染,可以快速拥有 PWA 特性,灵活性强,配置简单,而且文档及时更新,内容完整。通过 Lavas 搭建 PWA 站点主要有八个步骤:

    • 准备环境 & 初始化项目。安装 Lavas cli,初始化项目,选择模板,安装依赖。
    百度Web前端开发实战案例解析


    • 创建新页面。
    百度Web前端开发实战案例解析


    • 添加链接。使用 <router-link>,注意和 Vue 保持一致,to 属性指明目标页面,支持字符串格式的地址,支持对象。然后启动调试服务器。
    百度Web前端开发实战案例解析


    • 和服务端通讯。安装 axios,引入 axios,向后端发送请求。
    百度Web前端开发实战案例解析


    • 使用 Vues 管理数据。
    • 创建 STORE,需要定义一些内容。把请求数据移动到 action 里面,获取成功后调用 commit 触发 mutation 去更改 state。
    • 在组件中,通过 store.dispatch 触发 action 获取数据,然后通过 mapState 把 state 和计算属性关联,最后通过计算属性在页面上使用。


    百度Web前端开发实战案例解析


    • 配置 Manifest 。Manifestt.json 定义了启动 URL,定义各种尺寸的 icon,定义动画配色和启动模式。
    百度Web前端开发实战案例解析


    • 配置 Service Worker。配置,指定模板位置、构建位置
    百度Web前端开发实战案例解析


    • 构建和上线。执行构建命令 > lavas build;启动生产环境 > cd dist,> lavas start。

    Lavas 技术原理

    Lavas 的技术原理主要有自动生成路由规则、Skeleton、App Shell。

    Vue Router 需要四个步骤做整件事情:第一步定义和引用组件,第二步把组件和路由联系起来,第三步是把刚刚联系起来的数据放到 Router 函数创建实例,第四是把 Router 放到 VUE 创建实例,结束 Vue 实例挂载就。

    经过改进, Router 不用自己定义页面级组件,可以认定只要在 Pages 目录中,那组件都是页面级的,从而可以实现自动化 Import,不需要每次写一大堆的代码。另外,绝大多数情况路由规则和组件名称是有对应关系的。自动生成路由规则映射,省去了列出映射关系的麻烦,也避免后期组件改名带来的维护成本。

    Skeleton 叫骨架屏,就是实际内容展现之前,有个大概内容给用户看,这样用户提前看到一些东西。这是 Loading 升级版,因为每个组件可以自定义样式、切换时机、列表等。

    Lavas 的 Skeleton 都可以用,实现思路是 Vue 的挂载点一般是个空的 DIV,在构建时将 Skeleton 的内容添加到挂载点中,Vue 挂载前清空 DIV 内的占位内容,挂载后渲染为实际内容,使用 SW 预缓存 HTML,访问时直接从缓存中获取 HTML,这样可以让用户看到占位的东西。

    App Shell,就是把一个 APP 分两部分,有外壳和内容,把外壳缓存起来,每打开页面先把外壳拿出来,然后再是内容渲染。App Shell 实现有两个步骤,第一是划分,告诉程序哪部分是外壳、哪部分是内容;第二是程序把外壳缓存起来。这需要实现两方面,第一是 SPA,首次请求服务器返回 Index.HTML,所有页面的渲染均由 JS 完成,只在挂载点内重新渲染,单页 Index.html 就是 Shell,使用 SW 预缓存 Index.html 即可。第二是 SSR,首次请求服务器返回给全部内容,后续页面的渲染由 JS 完成。

    Web 生态的发展就是互联网的发展,新技术的不断涌现和新场景的不断实现也让这个开放的生态得以持续繁荣。王轶盛表示,百度希望国内的开发者与站长能够多多参与到 PWA 项目中,共同建设和改善国内的 Web App 生态。

    展开全文
  • 可以较快的上手然后自己开发一些好玩的项目来练手,网上也可以一抓一大把关于前端开发的小项目,可是还是有新手在学习的时候不知道可以做什么,以及怎么做,因此,实验楼就整理了一些前端项目教程,希望可以帮助正在...

    web前端还是很有趣的,可以较快的上手然后自己开发一些好玩的项目来练手,网上也可以一抓一大把关于前端开发的小项目,可是还是有新手在学习的时候不知道可以做什么,以及怎么做,因此,实验楼就整理了一些前端项目教程,希望可以帮助正在学习前端的小伙伴。

    为了方便阅读,大概把前端可以做的项目分为三类:

    • 游戏类
    • 实用类
    • 好玩类

    然后依次推荐一些项目教程,想要学习的小伙伴可以看看~

     

    其实很多常见的小游戏都是纯前端开发出来的,比如曾经风靡的2048、别踩白块啊等等,简单有趣,对于初学者来说,这些小游戏是非常不错的练手项目。

    网页版2048

    项目通过搭建一个网页版的 2048 ,让大家学习 web 应用程序的开发流程、以及如何让应用在移动端自适应处理以应对各种大小的屏幕,布局和初始化,编写游戏的逻辑、实现让它能移动,判定结果。学习资料的话可以加下web前端开发学习裙:659加上479再加上860自己去群里下载下。

     

    效果图

    是不是和我们玩的2048一模一样呀,O(∩_∩)O~

    HTML5两步实现拼图游戏

    项目使用HTML5和css3实现的九宫格拼图游戏。只要两步既可以实现炫酷的效果和动画。详细的讲解,让你清楚地知道每一句代码的作用。

     

    效果图

    自己开发完之后还可以玩玩,告诉你,你可以开发它,但是玩可不一定行哦~

    网页版扫雷

    项目实现一个Web版本的扫雷游戏,通过该项目将学习并实践 JavaScript 和 CSS 等基本的Web开发知识。

     

    效果图

    看着就有想玩的冲动啊,有木有~

    网页版-别踩白块游戏

    项目用最基础的html,css,以及原生的JavaScript实现一个网页版本的“别踩白块”游戏。

     

    效果图

    做完后可以试着玩玩,看看速度如何,太快或者太慢都可以随时调整。

    HTML5实现抓怪物小游戏

    项目利用 HTML5 的 Canvas 特性,结合 js 来开发一个抓小怪物的小游戏。从中我们可以学习到如何用 HTML5 来构建一个 WebApp。

    效果图

    JavaScript打地鼠游戏

    项目为打地鼠,是大家耳熟能详的一款经典的小游戏,用前端技术来实现这个游戏,简单有趣。

     

    效果图

    JavaScript按键控制坦克移动

    项目使用javascript按键控制坦克在网页上移动,通过使用很简单的,清晰明了的代码使坦克在页面上平滑的移动,通过学习,可以掌握javascript的按键操作,从而让页面更好的与用户互动。

     

    效果图

    看效果图很简单,但是只要稍微发挥你的想象力,把坦克改成其他的物体,就可以变成其他的小游戏了,比如加一个迷宫,就是走出迷宫游戏了。

    实用类

    前面介绍了前端开发游戏的项目教程,当然前端还可以开发一些非常实用的功能,比如小到网站的导航条啊,一个抽奖页面啊等等,这些在网页上经常看到的页面展示功能,基本都是前端开发出来的,因此,下面介绍一些比较实用的前端项目教程。

    CSS与JavaScript实现选项卡

    这个项目实现前端网页经常用到的 Tab 选项卡效果。主要用到 HTML、CSS 和 JavaScript 技术,比较适合前端入门练习。

    一起来抽奖吧

    一到各种节假日就各种的抽奖活动数不胜数,大奖很丰厚,但是,你懂得。这个项目教大家使用CSS3来制作一个抽奖转盘,一窥抽奖转盘的秘密。

    效果图

    Java和WebSocket开发网页聊天室

    WebSocket是HTML5一种新的协议,它实现了浏览器与服务器全双工通信,这个项目使用WebSocket来开发网页聊天室,前端框架会使用AmazeUI,后台使用Java,编辑器使用UMEditor。

     

    效果图

    瀑布流加载图片墙

    项目通过瀑布流加载图片墙,实现无限图片展示的效果,类似百度图片一样的加载方式,体现图片的交错排列。从中学习在没有后端开发者提供数据的背景下,由我们前端自己模拟数据及数据接口,自己就能给自己提供任何自己想要的数据。

     

    效果图

    canvas实现放大镜效果

    项目由 HTML5 的 canvas 实现放大镜效果,和淘宝图片放大器类似的效果,主要依靠 canvas 中的 drawImage() 函数,希望能通过实现这个简单的项目来让大家初步认识 canvas ,学会基本的 canvas 操作。

    效果图

    用CSS和jQuery打造一个简单的图片编辑器

    项目利用 CSS 的 filter 和简单的 Jquery 代码来实现一个简单的图片编辑器包括对图片的透明度,黑白,图片亮度等调节。

    120行代码实现简单的即时搜索

    项目利用 Meteor 和 MongoDB 实现一个简单的即时搜索服务。通过本项目将学习到 Mongodb 数据库的操作,Meteor 快速制作 Web App。

    别再说找不到web前端项目练手了,这套最全的前端实战案例请拿去

     

    效果图

    纯前端打造实时markdown编辑器

    项目通过纯前端打造一个实时 markdown 编辑器,用到的库或框架主要有 marked,Ace,highlight.js,Bootstrap。通过本实验学习如何编写一个 web 应用程序的相关知识。

     

    效果图

    HTML5 本地裁剪图片

    项目利用HTML5的canvas技术,结合HTML5的File API来实现图片的本地裁剪。通过本实验将学习到如何用 HTML5编写网络应用。

    效果图

    CSS3实现“红包照片”模糊效果

    微信朋友圈里的红包照片,还有 ios7 带来的“毛玻璃”菜单效果都很吸引眼球,该项目就尝试用熟悉的 CSS3 来实现这个效果。

    使用 Electron 编写跨平台桌面应用

    该项目主要学习如何用 Electron 配合 JavaScript 等 web 技术创建跨 Linux/Windows/macOS 平台的桌面应用。

    好玩类

    前端还可以用比较简单的方式实现一些可爱的东西,比如暖男-大白,萌宠-小黄人等等,只要你能想到的,几乎都可以用前端来实现,下面就介绍几个项目教程。

    打造网页版「大白」

    该项目利用 HTML 和 CSS 来打造《超能陆战队》里的 “暖男” -「大白」。学习如何用 HTML 结合 CSS 来设计高端大气上档次的图,并了解 HTML 布局,CSS 构建对象的样式。

     

    效果图

    JavaScript实现玫瑰花

    项目学习如何在网页中如何使用JavaScript语言实现一朵漂亮的玫瑰花。其中会用到html,css,javascript等技术。

     

    效果图

    这个玫瑰花的最后效果是慢慢开放和显现出来的,很浪漫的赶脚啊~

    SCSS(SASS)画小黄人

    项目通过 SCSS(SASS)画一个会眨眼睛的小黄人,主要学习 CSS3。其中将涉及 SASS 安装,代码的编写,以及绘制小黄人的相关结构逻辑。

     

    效果图

    看完以上3个项目,你能想象都是用前端来实现的么,O(∩_∩)O~

    展开全文
  • 本课程是针对零基础的前端入门实战案例课,通过讲解王者荣耀皮肤抽奖案例,帮助初学者快速入门学习前端开发,在案例中讲解HTML+CSS+JavaScript,零基础入门,如果你是前端开发的初学者,这套视频课程非常适合您!...
  • Web前端实战案例

    千次阅读 2020-02-01 20:34:57
    制作404页面 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>登录和注册页面设计</title> <style> /*通配选择器*/ ... m...

    制作404页面

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>登录和注册页面设计</title>
        <style>
            /*通配选择器*/
            *{
                margin: 0;
                padding: 0;
            }
            .box{
                font-family: "Microsoft YaHei UI";
                font-size: 80px;
                color: #f1ebe5;
                /*字体阴影*/
                text-shadow: 0 8px 9px #c4b59d,0px -2px 1px rgba(255,46,108,0.73);
                /*设置字体加粗*/
                font-weight: bold;
                text-align: center;
                padding: 20px 100px;
                /*设置颜色渐变*/
                background: linear-gradient(to bottom,#0dc418 0%,#5dc4a3 100%);
            }
            h1{
                border-bottom: 1px solid #fff;
            }
            h2{
                font-size:20px ;
            }
            input{
                background-color: #20a7ff;
                border-radius: 10px;
                border:0;
                height: 30px;
                width: 80px;
                padding: 5px;
                color: white;
            }
        </style>
    </head>
    <body>
    <div class="box">
        <h1>404</h1>
        <h2>抱歉...你找的页面不存在了</h2>
        <input type="button" value="返回首页"/>
        <input type="button" value="联系管理"/>
    </div>
    </body>
    </html>
    

    注释:linear-gradient(direction, color-stop1, color-stop2, ...):颜色渐变函数

    计算借贷支出金额

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>自动计算借贷支出金额</title>
        <style>
    
        </style>
    </head>
    <body bgcolor="white">
        <!--表单取名-->
        <form name="loandata">
            <table>
                <!--第一行的的文本占三列-->
                <tr><td colspan="3"><b>输入贷款信息:</b></td> </tr>
                <tr>
                    <td>(1)</td>
                    <td>贷款总额:</td>
                    <!--onchange事件会在域的内容改变时发生,也可用于单选框或复选框改变后触发的事件-->
                    <td><input type="text" name="principal" size="12" onchange="calculate()"/></td>
                </tr>
    
                <tr>
                    <td>(2)</td>
                    <td>年利率(%):</td>
                    <td><input type="text" name="interest" size="12" onchange="calculate()"/></td>
                </tr>
    
                <tr>
                    <td>(3)</td>
                    <td>借款期限():</td>
                    <td><input type="text" name="years" size="12" onchange="calculate()"/></td>
                </tr>
    
                <tr><td colspan="3"><input type="button" value="计算" onclick="calculate()"/></td></tr>
    
                <tr><td colspan="3"><b>输出还款信息:</b></td> </tr>
    
                <tr>
                    <td>(4)</td>
                    <td>每月还款金额:</td>
                    <td><input type="text" name="payment" size="12"/></td>
                </tr>
                <tr>
                    <td>(5)</td>
                    <td>还款总金额:</td>
                    <td><input type="text" name="total" size="12"/></td>
                </tr>
                <tr>
                    <td>(6)</td>
                    <td>还款总利息:</td>
                    <td><input type="text" name="totalinterest" size="12"/></td>
                </tr>
            </table>
        </form>
    </body>
    <script>
        function calculate() {
            //贷款总额
            //把年利率从百分比换成十进制,转换成月利率
            //还款月数
            //获取文本框的值
            var principal=document.loandata.principal.value;
            var interest=document.loandata.interest.value/100/12;
            var payments=document.loandata.years.value*12;
            //计算月支付额
            var x=Math.pow(1+interest,payments);
            var monthly=(principal*x*interest)/(x-1);
            //检查结果是否是无穷大的数
            if(!isNaN(monthly)&&(monthly!=Number.POSITIVE_INFINITY)&&(monthly!=Number.NEGATIVE_INFINITY)){
                document.loandata.payment.value=round(monthly);
                document.loandata.total.value=round(monthly*payments);
                document.loandata.totalinterest.value=round(monthly*payments)-principal;
            }
            else {
                document.loandata.payment.value="";
                document.loandata.total.value="";
                document.loandata.totalinterest.value="";
            }
        }
        function round(x) {
            return Math.round(x*100)/100;
        }
    </script>
    </html>
    

    注释:

    1. 通过文本框的名字获取其值或向文本框传递值
    2. 获取input文本框的值的方法:.valuedocument.getElementById("idName").value$("#idName").val()$("input[id='idName']").val()$("#idName").attr("value")$("input[id='idName']").attr("value")
    3. Math.pow(X,Y)函数:返回X的Y次幂的值,若结果为虚数或负数则返回NaN,若结果过大则返回Number.POSITIVE_INFINITYNumber.NEGATIVE_INFINITY
    4. isNaN():检查参数是否为非数字值,返回值为布尔类型
    5. Math.round():把参数四舍五入为最接近的整数

    制作二级关联菜单

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>制作二级关联菜单</title>
        <style>
    
        </style>
    </head>
    <body onfocus="ChangeCity">
    <h3>选择省份及城市</h3>
    <form name="frm">
        <p>省份:
            <select name="optProvince" size="1" onchange="ChangeCity()">
                <option>--请选择--</option>
                <option>河南省</option>
                <option>河北省</option>
                <option>浙江省</option>
            </select>
        </p>
        <p>城市:
            <select name="optCity" size="1">
                <option>--请选择--</option>
            </select>
        </p>
    </form>
    </body>
    <script>
        var aCity=[["--请选择--"],["--请选择--","郑州市","洛阳市","开封市","南阳市","周口市"],["--请选择--","石家庄市","秦皇岛市","张家口市"],["--请选择--","杭州市","嘉兴市","温州市"]];
        function ChangeCity() {
            var i,iProvinceIndex;
            iProvinceIndex=document.frm.optProvince.selectedIndex;
            iCityCount=0;
            while (aCity[iProvinceIndex][iCityCount]!=null){
                iCityCount++;
            }
            document.frm.optCity.length=iCityCount;
            for (i=0;i<=iCityCount;i++){
                document.frm.optCity[i]=new Option(aCity[iProvinceIndex][i]);
            }
            document.frm.optCity.focus();
        }
    </script>
    </html>
    

    注释:

    1. <form>标签:表单适宜添加name,可以方便获取、使用
    2. <select>标签:下拉列表,<option>标签用于定义列表中的可用选项,相关语法资料
    3. selectedIndex:设置或返回下拉列表中被选选项的索引号,若允许多重选择,则仅返回第一个被选选项的索引号
    4. 下拉列表可以通过<select>标签的name属性以及索引添加option,语法:optionName[i]=new Option(content)
    5. focus():为下拉列表设置焦点

    制作缩进的二级菜单

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>制作伸缩的二级菜单</title>
        <style>
            /*一级菜单风格设置*/
            body{
                background-color: #eed0e0;
            }
            /*id选择器*/
            #navigation{
                width: 200px;
                font-family: Arial;
            }
            /*子选择器*/
            #navigation>ul>li{
                border-bottom: 1px solid #AD9F9F;
            }
            #navigation>ul>li>a{
                display: block;
                padding: 5px 5px 5px 0.5em;
                /*链接去除下划线*/
                text-decoration: none;
                border-left: 12px solid #711111;
            }
            #navigation>ul>li>a:link,#navigation>ul>li>a:visited{
                background-color: #c11136;
                color: #FFFFFF;
            }
            #navigation>ul>li>a:hover{
                background-color: #880020;
                color: #f00;
            }
            h1{
                color: red;
                background-color: #49ff01;
                text-align: center;
                padding: 20px;
            }
            img{
                float: left;
                border: 2px #F00 solid;
                margin: 5px;
            }
            /*二级子菜单风格设置*/
            /*包含选择器*/
            #navigation ul li ul{
                margin: 0px;
                padding: 0px;
            }
            #navigation ul li ul li{
                border-top: 1px solid #ED9F9F;
            }
            #navigation ul li ul li a{
                display: block;
                padding: 3px 3px 3px 0.5em;
                text-decoration: none;
                border-left: 28px solid #a71f1f;
                border-right: 1px solid #711515;
            }
            #navigation ul li ul li a:link,#navigation ul li ul li a:visited{
                background-color: #e85070;
                color: #FFF;
            }
            #navigation ul li ul li a:hover{
                background-color: #c2425d;
                color: #ffff00;
            }
            #navigation ul li ul.myHide{
                display: none;
            }
            #navigation ul li ul.myShow{
                display: block;
            }
        </style>
    </head>
    <body>
    <div id="navigation">
        <ul id="listUL">
            <li>
                <a href="#">个人中心</a>
                <ul>
                    <li><a href="#">个人资料</a> </li>
                    <li><a href="#">与我相关</a> </li>
                    <li><a href="#">好友动态</a> </li>
                </ul>
            </li>
            <li>
                <a href="#">我的主页</a>
                <ul>
                    <li><a href="#">日志</a></li>
                    <li><a href="#">相册</a></li>
                    <li><a href="#">状态</a></li>
                </ul>
            </li>
            <li>
                <a href="#">留言板</a>
            </li>
            <li>
                <a href="#">应用中心</a>
                <ul>
                    <li><a href="#">游戏</a></li>
                    <li><a href="#">音乐</a></li>
                </ul>
            </li>
            <li>
                <a href="#">更多</a>
            </li>
        </ul>
    </div>
    </body>
    <script src="jQuery.js"></script>
    <script>
        function change() {
            var SecondDiv=this.parentNode.getElementsByTagName("ul")[0];
            /*通过CSS交替更换实现隐显*/
            if (SecondDiv.className=="myHide"){
                SecondDiv.className="myShow";
            }
            else {
                SecondDiv.className="myHide";
            }
        }
        window.onload=function () {
            var Ul=document.getElementById("listUL");
            var aLi=Ul.childNodes;
            var A;
            for (var i=0;i<aLi.length;i++){
                if (aLi[i].tagName=="LI"&&aLi[i].getElementByTagName("ul").length){
                    A=aLi[i].firstChild;
                    A.onclick=change;
                }
            }
        }
    </script>
    </html>
    

    注释:

    1. >标签:子选择器,样式效果仅作用于第一个子元素
    2. 标签:包含选择器,作用于所有子元素
    3. border:solid:边框样式(border-style),选项有:dotted:点状,solid:实线,double:双线,dashed:虚线
    4. display属性:规定元素生成的框的属性,常用属性值:none:元素不会被显示;block:块级元素;inline:内联元素
    5. parentNode:返回指定结点的父节点
    6. getElementsByTagName方法:返回带有指定标签名的对象的集合
    7. window.onload:用于在网页加载完毕后立刻执行的操作
    8. childNodes:返回指定结点的子节点
    9. tagName:获取元素的标签名

    Cookie应用实例

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Cookie实例</title>
        <script>
            //设置cookie值的函数,创建一个函数用于存储访问者的名字
            function setCookie(cname,cvalue,exdays) {
                //获取本地时间
                var d=new Date();
                //设置记录的过期时间
                d.setTime(d.getTime()+(exdays*24*60*60*1000));
                var expires="expires="+d.toUTCString();
                document.cookie=cname+"="+cvalue+";"+expires;
            }
            function getCookie(cname) {
                var name=cname+"=";
                var ca=document.cookie.split(';');
                for (var i=0;i<ca.length;i++){
                    var c=ca[i].trim();
                    if (c.indexOf(name)==0){
                        return c.substring(name.length,c.length);
                    }
                }
                return "";
            }
    
            function checkCookie() {
                var user=getCookie("username");
                if (user!=""){
                    alert("再次欢迎您:"+user);
                }
                else {
                    user=prompt("请输入您的姓名:","");
                    if (user!=""&&user!=null){
                        setCookie("username",user,30);
                    }
                }
            }
        </script>
    </head>
    <body onload="checkCookie()">
    </body>
    </html>
    

    注释:

    1. Date():Date对象用于处理日期和时间,对象会自动将当前日期和时间保存为初始值
    2. getTime():Date对象方法,返回1970年1月1日至今的毫秒数
    3. setTime():Date对象方法,以毫秒设置Date对象
    4. toUTCString:根据世界时,把Date对象转换成字符串

    文件引入

    项目的CSS文件与HTML文件以及图片文件不在同一个文件夹中,但是这些文件夹在同一个文件夹中,引入方式如下

    <link rel="icon" href="../img/favicon.ico"/>
    <link rel="stylesheet" href="../css/firstPage.css">
    

    注释:../表示返回上一级目录访问

    设置网页图标

    <link rel="icon" href="../favicon.ico">
    

    CSS选择器

    1. <nav>:定义导航链接的部分,如果文档中有前后按钮,则应该放到<nav>标签中
    2. :link:未被访问的链接的样式
    3. :visited:已被访问的链接的样式
    4. :hover:鼠标浮动在上面的样式
    5. :active:作用于活动链接

    HTML标签

    1. <main>:规定文档的主要内容

    CSS属性

    1. transition:设置完成过度效果的显示时间
    2. opacity:设置div元素的不透明级别,0为完全透明,1为完全不透明
    3. visibility:规定元素是否可见
    4. overflow:规定当内容溢出元素框时发生的事件
    5. position规定属性的定位类型
    6. z-index:设置元素的堆叠顺序,拥有更高堆叠顺序的元素总是会处于堆叠顺序较低的元素的前面,可设置为负值,该属性尽在定位元素的上奏效
    7. top:属性规定元素的顶部边缘。该属性定义了一个定位元素的上外边距边界与其包含块上边界之间的偏移。如果 “position” 属性的值为 “static”,那么设置 “top” 属性不会产生任何效果。
    8. alt:属于<img>标签的属性,如果无法显示图像,浏览器将显示替换文本
    9. box-sizing:允许以特定的方式定义匹配某个元素的特定属性
      10.@media:用于针对不同的媒体类型定义不同的样式,可以针对不同的屏幕尺寸设置不同的样式,适用于响应式页面的制作,重置浏览器大小的过程中页面会根据浏览器的大小重新渲染画面
    10. !important: 元素样式优先级
    11. background-position:设置背景图像的起始位置
    12. touch-action:用于指定某个区域是否允许用户自己操作,属性值:auto:有浏览器决定进行哪些操作
      none:不进行任何操作
      manipulatio:浏览器只允许进行滚动和持续缩放操作
    13. table-layout:设置表格单元格、行、列的算法规则,属性值:automatic:列宽度由单元格内容设定
      fixed:列宽由表格宽度和列宽度设定
      inherit:规定应该从父元素继承 table-layout 属性的值。
    展开全文
  • 前端项目实战及原理

    千次阅读 2020-06-14 19:21:55
    使用微前端项目中主要是解决使用iframe引入第三方页面时遇到的框架受限,页面交互不统一等问题,项目中遇到的问题大概如下: iframe 内部路由跳转,不会影响到外部的路由地址,无法记住当前访问的页面地址,...
  • 本课程是针对零基础的前端入门实战案例课,通过讲解 石头剪刀布游戏 案例,帮助初学者入门学习前端开发,在案例中讲解HTML+CSS+JavaScript,零基础入门,如果你是前端开发的初学者,这套视频课程非常...
  • 二、项目实战 2.1技术架构 2.2目录部署 2.3路由 2.4 webpack拓展 2.5 vue cli拓展 2.6数据 2.7开发模块顺序 三、Vue 3.1路由守卫 一、Vue Cli 在vue项目中,我们要编译vue文件,要编译E...
  • Java-web旅游项目实战案例(四个)IDEA项目源码; 4 技术选型 4.1 Web层 a) Servlet:前端控制器 b) html:视图 c) Filter:过滤器 d) BeanUtils:数据封装 e) Jackson:json序列化工具 4.2 Service层 f) Javamail:...
  • 11个web前端开发实战项目案例+源码!拿走就是了

    千次阅读 多人点赞 2020-12-25 17:18:45
    小白为大家收集了11个web前端开发
  • 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权...小白为大家收集了11个web前端开发,大企业实战项目案例+5W行源码!拿走玩去吧! 老规矩:转发+关注并私信小编:“资料”全部打包带走! 下面给大家简单介...
  • 目录:WebpackWEEXVueReactFabricJSES6COCOS 实战COCOS基础 下载地址:百度网盘
  • 目录 Vue 2.0 一、Vue Cli 1.1安装 1.2创建项目 1.3启动项目 1.4目录架构 1.5 webpack配置 二、项目实战 2.1技术架构 2.2目录部署 2.3路由 2.4 we...
  • 目录Vue 2.0 一、Vue Cli ...二、项目实战 2.1技术架构 2.2目录部署 2.3路由 2.4 webpack拓展 2.5 vue cli拓展 2.6数据 2.7开发模块顺序 三、Vue 3.1路由守卫 一、Vue Cli 在vue项目中,我...
  • Web前端开发工程师需要学习哪些课程?   1.前端设计师: 会基本的企业网站设计+能切图+能写基本的JS应用+Jquery熟悉应用 2.前端工程师: 会切图+能写JS中高级应用+数据库+能用PHP建立后台管理系统   网上...
  • 前端实战案例--fullpage导航栏实现

    千次阅读 2020-02-12 08:43:29
    想练习更多前端案例,请进个人主页,点击前端实战案例->传送门 觉得不错的记得点个赞?支持一下我0.0!谢谢了! 不积跬步无以至千里,不积小流无以成江海。 效果图如下: 代码如下: Fullpage.vue <...
  • 目录1 原理先知2 思路概要3 详细步骤3.1 下载资源3.2 项目创建架构3.3 style.css 编写3.3.1 分步详解3.3.2 总观代码3.4 menubar.html 编写3.4.1 分步详解3.4.2 总观代码4 成品效果展示5 总结 1 原理先知 商品菜单...
  • 想练习更多前端案例,请进个人主页,点击前端实战案例->传送门 觉得不错的记得点个赞?支持一下我0.0!谢谢了! 不积跬步无以至千里,不积小流无以成江海。 效果图如下: 代码如下: <!DOCTYPE html>...
  • 一共超过33G的整套麦子学院Web前段视频教程,共分为4大阶段循序渐进的进行逐步深入的解读,从基础知识入门到后期的项目实战开发 对于想从事Web前端学习和开发工作的朋友来说是非常理想的一套学习课程,非常值得推荐...
  • 前端工程师之jquery实战案例大集合

    万人学习 2015-07-20 10:07:47
    详细介绍了一个js类库的实战应用,这里主要讲解jquery。是一个可以很容易就做各种网页特效的面相对象的方法函数集合类库。
  • 前端项目案例

    万次阅读 2017-10-18 18:28:13
    脚手架市场http://scaffold.ant.design/#/
  • React前端开发入门与实战案例

    千次阅读 2017-09-28 13:52:56
    本课程主要讲解React的基础使用技巧及实战案例。 React 是一个用于构建用户界面的 JavaScript 库,主要用于构建UI,很多人认为 React 是 MVC 中的 V(视图)。React 起源于 Facebook 的内部项目,用来架设 ...
  • 我们将利用Angularjs 和 Bootstrap,开发一个前端应用实例,通过这一次简单的项目实战,引领大家进入AngularJS前端开发的殿堂,并向大家介绍一下几个知识点:  1.MVC 基础,通过项目实例,让大家初步体会MVC设计...
  • 前言最近工作一直很忙,复盘周期也有所拉长,不过还是会坚持每周复盘。今天笔者将复盘一下typescript在前端项目中的应用,至于为什么要学习typescript,我想大家也不言自明,目前...
  • Vue整合SpringBoot项目实战之Vue+Element-Ui搭建前端项目

    千次阅读 多人点赞 2020-07-23 20:16:03
    Vue整合SpringBoot项目实战之Vue+Element-Ui搭建前端项目 源码: 前端项目代码 后端项目代码 Project setup npm install Compiles and hot-reloads for development npm run serve Compiles and minifies ...
  • HTML5+css3移动端H5项目案例实战、web前端开发移动端webApp案例源码、H5爆款试客商城、手机商城网站实例源码模板!!! 主张原创设计,拒绝数量、追求质量,100%纯手写代码!追求完美是我们一贯的信念。...
  • Anjular+Bootstrap前端开发案例实战

    千次阅读 2016-08-26 17:21:27
    我们将利用Angularjs 和 Bootstrap,开发一个前端应用实例,通过这一次简单的项目实战,引领大家进入AngularJS前端开发的殿堂,让大家体验到AngularJS在前端开发中的强大功能。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 14,550
精华内容 5,820
关键字:

前端项目实战案例