为什么现代Web开发如此复杂? 第一部分

现代的前端开发给人留下了极好的印象:有些人喜欢它,有些人则鄙视它。

我是现代Web开发的忠实拥护者,尽管它让我想起某种“魔术”,它有其优缺点:

  • 当您了解如何使用魔术工具(babel!Bundlers!Watchers!等等!)时,您的工作流程将变得快速,强大而惊人
  • 如果您不了解魔术工具,那么一切都会令人困惑
  • ...如果有人不能帮助您克服术语的混乱,夸张和互联网上过时的信息,尝试掌握魔术的方法往往会失败

我最近不得不向远非如此的人们解释“现代Web开发工作流程”,并且...

我真的不得不解释很多!

即使是肤浅的解释也相当长。 但是仍然尝试跟踪Web开发的演变:

第1部分:我们如何从静态网站变成通天塔




最简单的网站:静态


让我们从每个人都应该理解的“经典” Web开发开始。

在经典开发中,我们直接修改HTML / CSS / JavaScript文件。 要查看更改的结果,请在浏览器中本地打开HTML文件,然后在开发过程中刷新页面。

工作流程


工作流程如下:

  1. 我们在诸如Atom之类的文本编辑器中编辑HTML / CSS / JavaScript。
  2. 将文件保存在文本编辑器中。
  3. 在浏览器中打开或重新加载文件。


编辑JavaScript,保存文件,更新页面

部署方式


当您想在Internet上发布站点时,我们只需将这些HTML / CSS / JavaScript文件上传到某个地方即可。

使用Netlify之类的服务,您只需拖放一个文件夹即可在Internet上发布页面。 这是已发布页面的示例

太简单了! 为什么一切都变得复杂?


如果您了解“经典”工作流程的工作原理,那么您可以说:地狱,这真的很简单又方便。 为什么需要更改它? 为什么现代Web开发如此复杂?

简短的答案是...好,两个简短的答案。

两个简短的答案:

  • 您不必使情况复杂化。 “经典” Web开发工作流程很棒! 对于许多任务来说已经足够了! 请勿添加其他工具或目的不明确的工具。
  • 对于某些项目,您将从更复杂的工作流程中受益 每个新工具都旨在解决特定问题。

要了解这些工具,我们需要了解现代Web开发的挑战 。 在这些文章中,我们将从数十年来存在的旧的Web开发问题入手,分别对它们进行单独考虑:

旧问题:JavaScript限制


直到最近,JavaScript和Web API都有许多局限性(由于各种原因我们忽略了)。

以下是其中一些:

  • 没有模块
  • 没有常数
  • 没有承诺/异步
  • 没有Array.includes()(!!)
  • 许多常见基元的语法笨拙/缺少语法(没有for-of,模板文字,箭头函数语法,模板解压缩...)
  • (Web API)无数的DOM操作无用地复杂(例如添加/删除类名,隐藏元素,选择元素,删除元素...)

浏览器只能执行JavaScript,因此您无法使用另一种语言来克服这些限制。

另外:JavaScript和Web API有什么区别?


您可能已经注意到,我在上面说过“ JavaScript和Web API”。 这是两件事!

当您为网页编写JavaScript时,任何与网页本身交互的API调用都代表了Web API (碰巧是用JavaScript编写的),但它不是JavaScript语言的一部分。

范例:

  • Web API: document method document; window method window; Event, XMLHttpRequest, fetch . .
  • JavaScript: , const/let/var, , Promise . .

, Node.js, JavaScript , , , document.querySelector ( ).

: jQuery


2006 jQuery, JavaScript Web API.

jQuery API, -, DOM, , - .

, : JavaScript Web API, , . , , JSON, jQuery jQuery API.

: JavaScript


2006 !

JavaScript Web API , jQuery , !

JavaScript — . , , JavaScript .

, “ES6”. “ECMAScript 6” 6- ECMAScript. ECMAScript — JavaScript. “ECMAScript” , “JavaScript” — .

(, : JavaScript / ECMAScript; “HTML” / « HTML». , ! , ! JavaScript ECMAScript — ).

ES6 ( 2015 ) , JavaScript, const, ( ES8 : async).

Web API 2006 , document.querySelector, fetch classList hidden.

jQuery 2019 , , JavaScript Web API.

… !

- :


JavaScript, ( Web API, JavaScript).

, 1)  ; 2)  ; 3)  ( ).


: JavaScript? ( )

. , JavaScript, . , - , , , .

Babel.

Babel — JavaScript, JavaScript … JavaScript! , JavaScript, JavaScript, , JavaScript, .


Babel JavaScript,

: Babel Web API


, fetch JavaScript, babel ( «»), fetch — Web API, JavaScript ( ).

, Web API! .

: + babel


, , babel. - ?

, ( Parcel webpack, ).


  1. * Babel
    (* CLI, , npm. babel npm dev , )


  1. -.


    : JavaScript src


, «» JavaScript, JavaScript, .

, :

  1. JavaScript babel, :



    , JavaScript :


    : Babel “script.js”,
  2. JavaScript HTML CSS:


    * , , , babel .


    (*! Debug Release, !)




, «» «» ():

  • : , -.
  • : , .

, :

  • ,
  • ,

- Babel.

! :

  • , ,
  • ,

, -.

( , Debug Release , - -. , , - - Debug/Release).

, :

  • npm
  • CSS
  • React/Vue/Angular/ -

, !

: npm


npm ( ) ( ), .

Source: https://habr.com/ru/post/zh-CN463503/


All Articles