热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

《从零构建前后星散的web项目》:前端相识过关了吗?

#前端基本架构和硬核引见手艺栈的挑选起首我们构建前端架构须要对前端生态圈有统统相识,而且最好带有肯定的手艺前瞻性,好的手艺架构能够日后会轻易的扩大,削减重构的次数,纵然重构也不须要

# 前端基本架构和硬核引见

《《从零构建前后星散的web项目》:前端相识过关了吗?》

手艺栈的挑选

起首我们构建前端架构须要对前端生态圈有统统相识,而且最好带有肯定的手艺前瞻性,好的手艺架构能够日后会轻易的扩大,削减重构的次数,纵然重构也不须要大动干戈,我一般选型手艺栈会参考以下三点:

一、提出本身营业的需求

  • SEO 是不是非常重要?
  • 重要面向:挪动端照样 pc 端?
  • 是不是有开辟 app 的计划?

有了如许的题目我们能够带着题目去重点选型一些这写题目手艺计划比较成熟的手艺栈。

二、本身是不是成熟,文档是不是友爱

这里举一个之前开辟历程当中现实碰到的,当时为了优化用户体验,节约开辟效力 选型了一款
MVVM 轻量框架,惋惜当时没有决定权,
CTO 选型了
avalon

当时之所以没有挑选 backbone ,重要是由于没有成熟的中文文档,斟酌到团队的流动性和上手性临时没做斟酌,终究挑选了 司徒正美的 avalon 当时来讲照样比较前卫的,也有一些以去哪网为首的大公司都在用。我们当时用的时刻 avalon2 刚出不久,直接用的 2.0,运用历程也涌现了一点题目:文档离散,这一块那一块,存在后置性,生态少,扩大性价比不高 ,有时刻碰到匪夷所思的 bug 寻觅缘由翻了几遍 demo 、文档 能够会找到答案,没有重点标识。固然就当时来讲确实是给我们提拔了部份开辟效力,然则我能够当时更倾向 Angular 或 vue 的。由于他们有无以伦比的生态圈和种种题目标手艺计划以以及圆满的开辟者文档,值得一提的是 avalon 的作者是兼职保护的,假如全栈运营的话,我置信远比如今更好,看一看 avalon 的源码也会对本身有不少的提拔。关于临盆的手艺选型要越发郑重。

三、相识其生态系统

上文提到了生态系统,以我比较经常使用的 vue 来举例,vue 生长至今仅官方为我们供应了以 vuex、 vue-router、 vue-loader、 vue-cli、 vuepress、 vue-devtools、 vue-ssr 为首的 89 个开源项目,包括无数的 vue 相干的 UI 库,vue 插件 以至是近两年淘宝供应的 Hybridweex 的支撑

停止本日 github 开源的 与 vue 相干的项目多达 167,752 个,与 angular 相干的多达 416,811 个,与 react 相干的 多达 594,272 个。

统计时候 2018-09-01

我想有了如许的生态支撑,完整能够满足我们中小项目标 95% 以上的需求,至于比较哪一个更强是没有意义的 。

由于比较熟习让我大胆擅自挑选 vue 作为我们的 SPA 主架构

四、画出我们希冀的前端基本架构模子

由于我们上一章选型了 Vue,假如只斟酌前端我们最初的主意:手艺栈大概是如许的:

《《从零构建前后星散的web项目》:前端相识过关了吗?》

经由过程 node 和 webpack 的支撑 把 vue 组件
build 打包成传统元素,宣布到
http 效劳中,要求后端效劳。

随后多是如许的:

《《从零构建前后星散的web项目》:前端相识过关了吗?》

跟着现在主流第三方库的越来越多和手艺的尝鲜、客户端的需求、或被动[不得不必]、或主动的去引用了 babel less sass *.loader 和 hybrid 等组件库。

再厥后的手艺栈须要我们依据真正踩坑以后才会逐步圆满

多是 polyfill 懒加载 xss protobuf 等 针对 浏览器兼容速率优化SEO通信协议 等具体题目。所以,前期能够不必过量斟酌,我们只需晓得:这个题目我们是能够处置惩罚的,然则如今能够先不去斟酌,有些同砚,太过于“圆满主义”以至于主意不错,但动起手来做了几天就不做了,圆满主义害死人

相识 Webpack

WebPack 能够看作是模块打包机械,它能够剖析你的项目构造,找到 Javascript 模块以及别的的一些浏览器不能直接运转的拓展言语:Stylus、Scss、less、TypeScript、CoffeeScript 等,并将其转换和打包为适宜的花样供浏览器运用。比较经常使用的还能够经由过程 webpack-dev-server 举行开辟形式的热更新

WebPack 是一种模块化开辟的计划

当 webpack 处置惩罚运用程序时,它会递归地构建一个依靠关联图(dependency graph),个中包括运用程序须要的每一个模块,然后将所有这些模块打包成一个或多个 bundle

《《从零构建前后星散的web项目》:前端相识过关了吗?》

webpack 经由过程 loader 能够支撑种种言语和预处置惩罚器编写模块,末了打包为一个(或多个)浏览器可辨认的 Javascript css 文件

现在支撑的 loader 列表

相识 ES6

《《从零构建前后星散的web项目》:前端相识过关了吗?》

官方说法

ECMAScript 6(简称ES6)是于2015年6月正式宣布的Javascript言语的范例,正式名为ECMAScript 2015(ES2015)。它的目标是使得Javascript言语能够用来编写庞杂的大型运用程序.

科普

很多人老是搞不清楚 ES 这些东西,这里大白话讲讲:
他们的先后顺序是:ES5、ES6(ES2015)、ES7、ES8

在 2015 年 6 月 ES6 的第一个版本宣布, 正式称号就是 《ECMAScript 2015 范例》(简称 ES2015)算是 2011 年 ECMAScript 5.1 以后的 6.0版本

2016 年 6 月,小幅订正的《ECMAScript 2016 范例》(简称 ES2016)[由于修改小,实在他是 6.1 版本,但总有人情愿叫它 ES7 ,不范例的]

2017 年 6 月宣布 的《ECMAScript 2017 范例》(简称 ES2017) [由于修改小,实在他是 6.2 版本,但总有人情愿叫它 ES8 ,不范例的]

就像 Kubernetes 人们开他起了一个 K8S 的名字 (KS 中心有 8 个单词),他是不范例的

相识 Babel Traceur

《《从零构建前后星散的web项目》:前端相识过关了吗?》

Babel、Traceur 是一个编译Javascript的平台,它能够编译代码帮你到达以下目标:

Javascript.next-to-Javascript-of-today compiler

本日就运用将来的 Javascript

停止宣布日期 (2018-09-04) ,没有一款完整支撑ES6的Javascript代办(无论是浏览器环境照样效劳器环境),所以热衷于运用言语最新特征的开辟者须要将ES6代码转译为ES5代码。

让你能运用最新的Javascript代码(ES6,ES7…),而不必管新范例是不是被当前运用的浏览器完整支撑;

ES7 作者完整没精神看 ,不过 Bable 逐步替换了 Google 的 Traceur 成为主流了,我是个俗人,所以我选 Bable

相识 Sass Less Stylus

《《从零构建前后星散的web项目》:前端相识过关了吗?》

Sass 是不是是违反了中国的广告法了??

Sass 、Stylus 和 Less 之类的预处置惩罚器是对原生CSS的拓展,它们许可你运用类似于variables, nesting, mixins, inheritance等不存在于CSS中的特征来写CSS,CSS预处置惩罚器能够这些特别范例的语句转化为浏览器可辨认的CSS语句。

  • 一张表格对照三言语
言语完成特征赋值缩进
SassRuby变量$开首$var: value不须要
LessJavaSript变量@开首@var: value不须要
StylusNodeJs不能运用@开首var:10都能够

你如今能够都已熟习了,上文讲 WebPack 讲过: webpack 里运用相干 loaders 举行设置就能够运用了,以下是经常使用的CSS 处置惩罚loaders:

Less Loader
Sass Loader
Stylus Loader

本身去找:loader 列表

像:哪一种言语更好、运用的更多、更简朴 轻易引起争议的 博主不想议论,看本身喜欢

相识 Electron

《《从零构建前后星散的web项目》:前端相识过关了吗?》

一个能够运用运用: Javascript, HTML 和 CSS 构建跨平台的桌面运用的框架,也算 hybrid 的一种,重要场景是 PC 端,没啥好说的。

值得一提的是 Visual Studio Code 、Atom、GIthub Desktop 都是基于此构建的,有时刻按 CMD + option + i 有欣喜哦

基于 Electron 开辟的APP列表

总结

这些也就基本是前端比较经常使用的主流手艺栈构成的骨架了,以后的种种 webpack 插件,种种东西库的选型跟着项目实战引入更好,如今讲人人也记不住。

别急实战中的前端架构要比如今庞杂很多,跟我一同循规蹈矩的的来。

下一章为人人实战:《怎样疾速构建项目并晋级为一个范例的前端骨架》

关于我

  • 现在在写《从零构建前后星散项目》系列,修正和补充以此为准
  • 不断更新的 项目实践地点

往期文章

《从零构建前后星散 WEB 项目》 序 – 开源的意义

《从零构建前后星散web项目》:开篇 – 纵观WEB汗青演化

《从零构建前后星散web项目》探讨 – 深切聊聊前后星散架构

《从零构建前后星散web项目》预备 – 前端相识过关了吗?前端基本架构和手艺引见


推荐阅读
  • Redux入门指南
    本文介绍Redux的基本概念和工作原理,帮助初学者理解如何使用Redux管理应用程序的状态。Redux是一个用于JavaScript应用的状态管理库,特别适用于React项目。 ... [详细]
  • 本文详细介绍了 org.apache.commons.io.IOCase 类中的 checkCompareTo() 方法,通过多个代码示例展示其在不同场景下的使用方法。 ... [详细]
  • 本文探讨了如何在iOS开发环境中,特别是在Xcode 6.1中,设置和应用自定义文本样式。我们将详细介绍实现方法,并提供一些实用的技巧。 ... [详细]
  • 利用Selenium与ChromeDriver实现豆瓣网页全屏截图
    本文介绍了一种使用Selenium和ChromeDriver结合Python代码,轻松实现对豆瓣网站进行完整页面截图的方法。该方法不仅简单易行,而且解决了新版Selenium不再支持PhantomJS的问题。 ... [详细]
  • 简化报表生成:EasyReport工具的全面解析
    本文详细介绍了EasyReport,一个易于使用的开源Web报表工具。该工具支持Hadoop、HBase及多种关系型数据库,能够将SQL查询结果转换为HTML表格,并提供Excel导出、图表显示和表头冻结等功能。 ... [详细]
  • 深入理解Vue.js:从入门到精通
    本文详细介绍了Vue.js的基础知识、安装方法、核心概念及实战案例,帮助开发者全面掌握这一流行的前端框架。 ... [详细]
  • 本文详细探讨了HTML表单中GET和POST请求的区别,包括它们的工作原理、数据传输方式、安全性及适用场景。同时,通过实例展示了如何在Servlet中处理这两种请求。 ... [详细]
  • 本问题探讨了在特定条件下排列儿童队伍的方法数量。题目要求计算满足条件的队伍排列总数,并使用递推算法和大数处理技术来解决这一问题。 ... [详细]
  • 基于JQuery实现的评分插件
    本文介绍了一个使用JQuery创建的交互式评分控件。当用户将鼠标悬停在星星上时,左侧的星星会变为实心,右侧保持空心,并显示对应的评分等级;移开鼠标后,所有星星恢复为空心状态。 ... [详细]
  • 本文详细探讨了JavaScript中的作用域链和闭包机制,解释了它们的工作原理及其在实际编程中的应用。通过具体的代码示例,帮助读者更好地理解和掌握这些概念。 ... [详细]
  • Python 内存管理机制详解
    本文深入探讨了Python的内存管理机制,涵盖了垃圾回收、引用计数和内存池机制。通过具体示例和专业解释,帮助读者理解Python如何高效地管理和释放内存资源。 ... [详细]
  • 本文详细介绍如何使用CSS自定义HTML5视频播放器的样式,涵盖常见属性及跨浏览器兼容性问题。发布时间:2020-09-14 14:46:29;来源:亿速云;阅读量:58;作者:小新。 ... [详细]
  • Linux系统中Java程序Too Many Open Files问题的深入解析与解决方案
    本文详细分析了在Linux环境下运行的Java应用程序中可能出现的“Too many open files”异常现象,探讨其成因及解决方法。该问题通常出现在高并发文件访问或大量网络连接场景下,对系统性能和稳定性有较大影响。 ... [详细]
  • JavaScript 中创建对象的多种方法
    本文详细介绍了 JavaScript 中创建对象的几种常见方式,包括对象字面量、构造函数和 Object.create 方法,并提供了示例代码和属性描述符的解释。 ... [详细]
  • 鼠标悬停出现提示信息怎么做
    概述–提示:指启示,提起注意或给予提醒和解释。在excel中会经常用到给某个格子增加提醒信息,比如金额提示输入数值或最大长度值等等。设置方式也有多种,简单的,仅为单元格插入批注就可 ... [详细]
author-avatar
成长的人走在路上_774
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有