9159金沙游艺场

9159金沙游艺场 6
实验四 主存空间的分配和回收模拟

9159金沙游艺场HTML

Web 开发 17 年的所见所得

关于 NodeConfBP

NodeConfBP 会议于 2017 年 1
月在布达佩斯召开,本次会议为期一天,只有一个演讲室,由 RisingStack –
the Node.js Consulting & Development Company
组织并提供赞助。

下面你将会从第一人称视角感受到一个近乎完美的风格化的会议记录:

JavaScript –
由于它是web开发中最基本的语言,无论你怎么看待它,我们都要去考虑它的”未来”。毕竟,浏览器可能是PC和移动设备都在使用的最广泛的软件应用程序了。

实验5

实验5的课题是将一个用JavaScript实现的TodoMVC的app掰开,然后再用将其重写。换句话说,这是一个没有任何框架的实验,但用到了MVC的原理,目的就是让你更深入的理解MVC是如何工作的。

首先你看一下TodoMVC长什么样子,然后你要做的是先创建一个新的本地工程,建立MVC的三个组件。你还需要拉取Github仓库上的代码,因为这是一个比较复杂的实验,如果你仍然无法完成克隆这个项目,抑或没有时间,没有关系,直接使用你下载的Github代码,不断调试MVC的不同组件,直到你理解了组件之间是如何运作的。

为未来的你写代码

然后,在 2002 年到 2012 年之间我做了许多项目,大部分都是 web
项目,许多是基于 PHP
的,不管你相不相信,其中的一些项目到现在仍然在线上运行着,比如下面这个:

图片 1

它们今天还在困扰着我。因为这些应用是我在 2002 年或 2004
年或其他的什么年份完成的,我从来没有想过,在
2015年、2016年、2017年,我还能再次看到他们。

但是之后一通电话打过来了:”这个网站挂了,你能不能帮我们搞搞?”–尽管我早已经不是这个公司的员工了。

然后一万只草泥马在奔腾:

“哎呦,我去,这代码是哪个傻逼写的,写得太烂了。”

…恩,我知道这个傻逼就是我。

在我看来,写出未来的你能够理解并引以为豪的代码是很重要的!当你做一件事情的时候,要么不做,要做就把它做好。

函数式编程要变成主流

确切的说,大量函数式编程已经以他们的方式缓慢的占据主流的编程领域。但在现在复杂的web
apps中,”函数式编程”又再次被关注了。

类似Scala的后端开发者,正慢慢的拥抱函数式编程。Fackbook的React前端开发者也提出了UI的函数式看法。随着越来越多的赞扬,函数式开发将会成为主流。

如今,前端开发主要是响应式编程和函数式编程。React+Redux的开发模式,通常对于新手开发者来说,面向对象的编程是使用最多的解决方案。另一个角度来说,React需要开发者用一个函数来处理UI,而Redux用一个函数处理数据。所以基本还是OOP的模式。

不管怎样,那些用函数式编程的开发者,你仍然要坚持使用Javascript,并且学一些RxJS的技巧。RxJS是Javascript的响应式扩展,用于替代Flux框架,可能在小型项目中会有一些负作用,但在一些大型web项目中却能够发挥很大作用。Netflix采用RxJS,因为Angular2支持并很好的使用RxJS。由于RxJS是微软研发的,它也很好的集成了TypeScript,并且在不断的完善中。

但是,RxJS学起来比较难,不少开发者放弃了做FRP,而在项目中用函数式开发。

值得注意的是另外的一些预测,比如ClojureScript和Elm,
但和React+Redux的函数式编程比起来还是有些逊色。(然而,Redux是受了Elm启发的,所以有些开发者还是想去关注一下Elm的)

考虑到Javascript庞大的生态,很难说会大规模迁移到Elm的可能(当初有很多人坚信Scala会替代Java,然而最后并没有)。RxJS,
另一方面,仍然是学习门槛较高的框架,暂时无法变成主流。

随着函数式编程很好的适应了如今web开发的热潮,有一点需要强调,函数式编程已经成为当下Javascript开发人员必不可少的技能之一了。

这篇文章是”前端开发,从草根到英雄系列”的第二部分,在第一部分,你学到了如何使用HTML和CSS创建布局的最佳实践。在第二部分,我们会把JavaScript作为独立的语言来学习,我们将学习如何添加交互式的界面,JavaScript设计以及设计模式,最后我们会学习如何创建web应用。

不要轻信别人的代码!

对于 npm 同样有这样的问题。

图片 2

从上图中可以看到,编程世界里有 40 万个难题,是吧?所以就对应着出现了 40
万个解决方案。

上周我需要转换一些 UTF-8 HTML 字符实体–来给大家看一下我搜索出来的结果:

图片 3

针对于同一个问题,有许多模块给出了解决方案,所以选择正确的解决方案真的有点困难。

你必须查看并做决定:

  • 这个包还有人在维护么?
  • 这个包有多少个 bug?

在你用 npm 或者 yarn 来安装包的时候应该三思而后行。

同样,在你从 StackOverflow 上复制粘贴的时候也要三思而后行。

图片 4

这里是一个转换 HTML 字符实体的包。

在文档中有一处明显的错误:首先定义了 var Entities ,然后执行了
entities = new Entities(),他们在无意中生成了一个漏洞。

在 StackOverflow
上有一个问题,回答该问题的一个同学直接从文档里面复制粘贴到了
StackOverflow。

我确信下一个同学会直接将这段代码复制粘贴到他的代码里。仅仅是因为:StackOverflow
出品,必属精品。

没有人站出来说这段代码有问题。所以不管你是从 Stackoverflow
还是其他的什么地方复制粘贴代码都要三思而后行。

毕竟是别人的代码,所以你应该理解整个代码,并逐行确认代码确实如你所想的那样运行。

JavaScript走势的结论

JavaScript社区总体发展是比较快的。为了保持主流定位,必须有更多的资源和支持等一些相关信息。基于本文的JavaScript的趋势总结,如今的开发人员需要学习React
+
Redux,需要熟悉函数式编程,学习TypeScript。此外,还需要关注其他领域,React
Native等,同时有一些Electron的经验可能会更好。(当然,TDD测试驱动开发,无论何时都是你要掌握的技能)。

交互

One use for JavaScript is for animating your layouts

JavaScript作为一门语言,你已经对它有所了解,下一步要了解它如何应用于web,要了解JavaScript是如何与网站交互,你需要知道文档对象模型(Document
Object
Model)

DOM是HTML文档中具体的结构,它是对应于HTML节点的、由JavaScript对象构成的树型结构,更进一步,你可以读一下CSSTricks发表的什么是DOM这篇文章。它对DOM提供了简单直接的描述

Inspecting the dom

JavaScript可以修改DOM元素,这里有一个选择HTML元素并修改它的内容的例子:

var container = document.getElementById(“container”); 
container.innerHTML = 'New Content!';

不要担心,这仅仅是一个简单的例子,你可以通过JavaScript
“DOM操作”做更多的事情。想学习更多关于JavaScript如何与DOM交互的内容,你要通过以下MDN部分的指导,The
Document Object
Model

  • 事件
  • 使用DOM开发web和XML的例子
  • 如何创建一个DOM树
  • DOM简介
  • 使用选择器定位DOM

再次强调,把注意力集中到概念而不是语法上。试着回答以下问题:

  • 什么是DOM?
  • 如何查询元素?
  • 如何添加事件监听者?
  • 如何合适的改变DOM节点属性?

要获得一个通用的JavaScript
DOM操作列表,可以看一下PlainJS提供的JavaScript函数和帮助,这个网站提诸如如何设置HTML元素样式和连接键盘事件监听者等例子,如果你觉得还不够想更深入,你都可以阅读Eloquent
JavaScript中的DOM部分。

保持冷静,勿信炒作

提出质疑,勿信炒作–我们早就该这样做了。

毕竟,不管是 Facebook 还是 Google,它们也只是公司。如果 Facebook 将
React 交给社区,他们就会有这样的议程。Angular 和 React
正在交付给新的开发者,或许并不是因为他们想给社区一些东西。

我们应该时刻保持清醒,在大多数的时代都不会平白无故地天上掉馅饼,所有的东西都是期望能够赚钱的。

所以如果有这种炒作的话,你确实应该提出质疑。

图片 5

毕竟,所有的这些东西都仅仅是框架,是别人的代码!

在 JavaScript
的世界里,我们喜欢谈论不必要的依赖,因为那些由互联网上的某个陌生人撸出来的代码总是完美的,对吧?

使用第三方组件真的有点儿 low,使用整个框架同样也很 low。

问题是这样的,你依赖别人的代码,当你想修改一些东西的时候,你就必须去修改他们的源码。

所以此时此刻,你并没有学习使用编程语言本身来处理问题–你学习的是别人的代码,你调试的也是别人的代码。

过去有太多这样的案例,比如 PHP 的 Symphony
框架。你有一个生成器,然后直接运行就可以了,框架已经为你生成了你所需要的一切。但是,如果在某个时刻框架底层报错了,那你就真的不知道到底是哪里出问题了。

那么问题来了:

相比于快速完成项目,不依赖其他框架自己来做不是更好吗?

在这种情况下,当出现了问题时,你就得查看代码,学习如何让它们相互配合。

举个栗子,在 JavaScript 编程语言中有模块化这一概念–这个概念在 React
中体现的尤为突出–代码被分成一个一个的模块,然后以某种方式将它们组合起来。

我尝试着搞了一个 React 项目,但是我之后就执行 npm uninstall
卸载了所有的依赖,因为仅仅为了构建一个同构 React
应用竟然被安装了这么多的依赖。

图片 6

上图中显示有 13 个依赖!13
个依赖打包出来的代码都上兆了。这种情况一定要谨慎处理啊。

javascript 趋势

练习使用框架

你现在拥有JavaScript框架和架构的基础知识,于是又到了练习的时候了。在后续两个实验中,专注于应用你学过的框架的概念。特别需要注意的是,你要让你的代码保持DRY原则,头脑中能清晰的理解不同的概念,并能够让你的模块仅完成单一的功能

然后夜幕降临,迎来 2002 年

现在我们是在 2002
年,我创建了一家公司。那个时候,除了澳大利亚,互联网在全球爆炸式疯长。

我们静静地等待着互联网的繁荣有朝一日能够降临到我们身上,然后一切都结束了。

图片 7

我认为这一切都是从 boo.com 开始的,这是一家运营时尚服饰的初创公司。

在那时,每个人都花大把大把的时间去投资和新经济、新媒体相关的项目,所以整个行业开始繁荣增长。

在两个月内,公司从 10 个人涨到了 100 个人。然后,boo.com 破产了。

我认为那年的互联网危机和他们有关。所有的投资者差不多都退出了,因为他们意识到新经济公司终将会失败。

图片 8

这是纳斯达克的数据。我们当时在这个繁荣阶段,紧接着一切都奔溃了。这里是
9/11,一切都随风而逝…

我在 Google 上搜索了一下,这是那个时候硅谷人的想法,你们感受下。

图片 9

我找到了一个哥们儿这样写到:

“噢,我的天呐,这简直是致命的打击。作为一个年轻的初创公司,我知道的每个人都受到了影响。我知道的大多数人都失去了工作。不久之后,我知道的大部分人都搬走了。”

在这里他写到:

“泡沫时代的对比是史诗级的。开放式的酒吧活动和神话般的发布会都已经一去不复返了。工作和公司也都没有了。不久之后,绝大多数企业家没有了安全保障–很多人回到家里重新组团。”

听着有些熟悉,是吧?

如果今天你去硅谷,看到的也是这个样子。一切都是新兴的。工作在那里的人都是这样的:

“什么?他们公司没有自助早餐?

他们没有这种桌式足球?

噢,我不想在那儿工作了–我想买架飞机。”

图片 10

这种事情随时都会重现。不过那个时候,我们看到的更多一些。

尽管如果现在我说就算这种事情发生了也不会有什么问题,但是真的当这种事情发生了的时候,就真有问题了。

那么,到底2016年javascript开发方向是什么(或者2017年又会有什么新的动向)?

Web 开发 17 年的所见所得

2017/07/10 · 基础技术 ·
WEB,
开发建议

原文出处: Daniel
Khan   译文出处:众成翻译/myvin   

随着需求的变化,特别是在这技术日新月异的时代。你也许不知道以下这些技术,但想要提高或者完善你的技能,无论是了解Javascript的发展走向,还是让你更好的进入这个领域,它们都是你需要关注的(尤其是那些初学者)。

设计模式

JavaScript
框架没有重复发明轮子,很多框架都依赖于设计模式,在软件开发过程中,你可以把设计模式想象成解决通用问题的模板。

然而学习设计模式不是理解JavaScript的必要条件,我建议你了解以下几个设计模式

  • 装饰者模式
  • 工厂模式
  • 单件模式
  • Revealing
    module
  • 外观模式
  • 观察者模式

理解并实现一些设计模式不仅仅让你成为一个更好的工程师,还帮助你理解一些框架的具体实现。

进入 2000 年

在 2000 年我成为了一名 web 开发者,当时我在给 Austrian Job Service 教
Perl,因为在那个时候,找不到工作的人基本上都能成为一名 web
开发者,在当时这是种趋势。

那个时候 Perl 语言非常难,但是既然我已经准备教 Perl 了,那就是说明…

我非常非常聪明,是吧?

但是,真相永远是残酷的:其实我一点儿都不聪明。

当我尝试在数据库中更新数据集时,因为我不知道如何实现才算合理,所以一开始我的做法是先删除然后再插入。

图片 11

那么问题来了:就我这种水平,我又怎么会认为我自己还能教学呢?答案就是:达克效应。

简单来说,达克效应就是:因为你无知,所以你不知道你自己有多无知。

图片 12

那条绿线是你认为你知道的东西,那条黑线才是你真正知道的。那个时候,我认为自己无所不知,直到我完成了大学学业–应该是在
2011 年–我才知道 “好吧,其实我知道的也就那点儿东西”。

然后,你就开始变得稍微谦虚一些了,因为你开始学习那些你不知道的东西,接着你就开始有点儿绝望了。现在,我认为我在那个绿点的位置。

node.js已经众所周知了,后面的内容我们也不会提它,因为它太有名气了…..

Ajax

通过以上的文章和指南,你应该注意到了Ajax,Ajax是一项可以使用JavaScript和服务器交互的技术。

Ajax is what makes content dynamic

例如,当你在网页上提交一个表单,这个动作会将你的输入作为一个HTTP请求发送给服务器。当你在Twitter上发送一条微博,你的Twitter客户端发送了一条HTTP请求给Twitter的API服务器,并且使用服务器返回的数据更新页面。

你可以看下什么是Ajax获得更多Ajax的知识。如果你仍然不能完全理解AJAX的概念,看一下Explain
it like i’m 5, what is
Ajax,如果觉得还不够多,你可以读一读Eloquent
JavaScript的HTTP章节。

今天为止,新的浏览器请求标准是Fetch,想要了解更多的Fetch的内容,可以读一下Dan
Walsh的这篇文章,里面介绍了Fetch是如何工作的,以及如何使用它。你还可以在这篇文章中补充Fetch
polyfill知识。

认识下 Daniel Khan

DynaTrace 做过的任何和 Node
沾点儿边儿的项目基本上我都过了个遍。另外,我还在给 Lynda
做辅导课程。我在当地大学教书,有三个女儿和一个儿子。

这次讲话基本上都是我的故事,涉及到了我 17 年学到的关于 Node 的一些东西。

在我看来,世间万物都是循环的,它们会反复出现,因此我们能够以史为镜,避免重蹈覆辙。

图片 13

这张照片拍摄于 1997
年,是我第一张使用网络摄像头拍摄的照片,照片上右边的那个家伙就是我。

我们购买这台 silicon graphics O2
差不多花了一辆小轿车的价钱,然后这个家伙跑过来说“现在我们正在使用网络摄像头一起拍照”。然后
哇哦 照片就出现在互联网上了,在那个时候这真的是一件特别炫酷的事情。

1998 年我就已经开始玩 HTML 了。

图片 14

当时的网站看起来和图片上展示的差不多,而且那个时候这本书还没写呢。

那个时候还木有 Google,木有 Facebook,木有 GitHub,木有
Wikipedia,也木有 StackOverflow。

那个时候我们只有新闻组,我们可以在上面提问,其他人也可以回答问题。有点儿像
email,但和 email 还是有区别的。

图片 15

时间走到了 1999 年,也就是 17 年前,我在 Square 新闻组里写下了我的问题:

  • “我正在写 web 数据库,但是我们已经有桌面数据库了呀。”

是的,Microsoft Access!

  • “我的主机支持 MySQL,但是我并不知道这是什么意思…”

我真的不知道。

  • “我知道 query 语句是如何运行了。”

其实,我完全不知道。

那个时候,我真正学到的一点是:网络永远不会遗忘。那时我真的是毫无头绪。

手机端框架对比:React Native vs Ionic

自从 React Native 横空出世以来,人们预测2016年将是React
Native之年,考虑到跨平台的开发模式,未来将是手机开发和web技术的时代。如果你谷歌一下React
Native app性能 ,你会发现很多赞扬。特别是在对比了HTML5 hybrid
app,因为它跑起来更平滑。是否2016属于React
Native之年?在宣传和关注上,看来它是达到了预期的:

react native vs ionic

但实际是否是这样呢?当写这篇文章时,React
Native仍然没有到达1.0版本(现在是0.26)。所以,如果你现在想用React
Native需要勇气和耐心去处理一些app问题,可能需要重构代码,还会有一些未知的问题(Codementor也仅仅使用在手机端)。因此,我们再看一下React
Nativc 和 Ionic 在npm的下载对比:

react native vs ionic

出自 npm
trends

从这个图可以看出,似乎React
Naitve正在以它的方式,超越ionic成为最佳的跨平台移动开发框架。

在如今的就业市场中,掌握React Native技术的人才也变得比ionic更加抢手。

react native vs ionic

出自
indeed.com

在AngelList的招聘列表中我们做了简单的统计,这个结果体现了同样的问题:在5月30号左右,有75个关于ionic的招聘,有65个关于react
native的招聘数据。

因此,如果在你的简历中有熟悉React
Native技术。在2016年,雇主们绝对会给你的提供更高的薪资。

圆满

文章的结束,你应该稳固的掌握了JavaScript的基础,并且知道如何应用于Web开发。记住,这篇文章只是你的一个线路图,如果你想成为一个前端英雄,你还需要在项目中花更多的时间来适应这些概念,项目做得越多,你对他们也会越热情,你学到的也越多。

这篇文章是两部系列的第二部分,唯一遗漏的地方是Node,他是一个可以允许JavaScript运行在服务器上的框架,将来,也许我会在写一篇文章介绍Node相关的服务端开发,以及NoSql数据库

欢迎来Tweet上找我

作者:@Jonathan Z.
White
译者:jieniu
原文:From Zero to Front-end Hero (Part
2)

欢迎您扫一扫上面的微信公众号,订阅我的博客!

趁热打铁,抓紧机会!

我从中学到的一件事是:一定要趁热打铁,抓紧机会!我现在并没有高谈阔论地去谈钱。

我正在谈论的是通过投资于你的技能和知识来随时应对不好的时代。

拒绝平庸,对吧?!

编程语言太多了,我认为编程并不是说一定要成为一名 JavaScript 开发者或者
Node 开发者。编程是一种概念、一种思想。就比如,当你在用 JavaScript
写实例的时候,可以尝试一下 Scala 函数式编程的一些东西。

最开始我在 Lynda 和 Coursera 工作,这让我真正的理解了
JavaScript,理解了我使用 underscorejs
的原因,理解了怎样才能让需要的东西更好的融合起来。

所以我想鼓励你们的是:不要把你自己当成一个 JavaScript 开发者或者 Node
开发者,要把你自己当成一个工程师。

要学习思想、学习如何使用不同的语言去解决问题。你的视野决定你的世界,掌握知识面越广我们对问题的思考就会越灵活。

图片 16

这是我这次学习的课程。这真的很难,但是这是发明 Scala 的 Martin Odersky
做的,所以他知道他在做什么,这真的很有趣。

所有的这些资源在互联网上都是免费的,所以如果你有时间的话,可以投入一些时间和精力培养一下你的技能。

英文原文:Skills JavaScript Developers Should Learn in
2016
译者:xxholly32
译文地址:http://t.cn/R5HIDVI

jQuery

目前为止,你已经使用JavaScript对DOM做了很多操作了。事实是,已经有很多DOM操作的库,他们提供API来简化你的代码。

最流行的DOM操作库是jQuery,记住,jQuery是一个imperative库,它是在前端系统还没有今天这么复杂的时候开发的。今天,为了管理复杂的UI,我们会使用declarative框架和库,例如Angular和React。然而,我仍然建议你学习jQuery,因为作为一名前端工程师,你一定会在工作中遇到它的。

jQuery是JavaScript操作DOM的抽象

学习jQuery基础,可以看下jQuery学习中心,它会一步步的告诉你animations和事件处理这些重要的概念。如果你还想学习更多入门知识,你可以看下Codecademy的jQuery课程

记住,jQuery不是唯一的imperative
DOM操作解决方案,PlainJS和You
Might Not Need
jQuery是两个很好的资源,他们会告诉你和jQuery一样的频繁使用的JavaScript函数。

我们去了银行…

但是不管怎么着,我设法找到了一家公司,然后买了一台服务器。这台服务器还是我们去银行贷了
15,000 欧元买的。

和之前相比,现如今变化真的很大:我们有 serverless
架构,你可以一台服务器都不用就把整个公司创建起来。

那个时候,我们不得不把服务器放在维也纳的一个数据中心的机架上。

每当服务器宕机的时候,我就得开着车到维也纳去重启服务器。

图片 17

那次我学到的东西就是:你要努力理解什么是全栈。我说的就是上面的这个全栈。

全栈,意味着你至少应该知道一点儿 web 协议、知道路由的工作原理、知道 HTTP
基本的工作机理、知道 SMTP 的工作机制。

当出现问题的时候,知道这些包是如何打包进浏览器的,知道这些东西是如何协调的是很有必要的。

其他感兴趣的框架

那么还有什么别的框架?还有一些相对关注低一些的,但被炒作的一些框架。

Angular2

谷歌和微软合作开发的框架Angular2,或者说是用微软的
TypeScript
开发的更易管理的Angularjs2。这是什么意思呢?大型公司(一些非技术性的公司)可能会关注Angularjs2,特别是使用了微软的.NET框架的。从去年开始,微软也开始推动.NET的开源工作,使开发者能够更好的使用。

随着Angular2的重写,整个过程旨在能够修改Angular1
app开发存留的一系列问题,目前为止效果明显。Angular2
也会支持 web
组件开发,使其有能力支持更好的展现。而谷歌也认为它是Web开发的未来。

然而,不管Angular团队如何努力的带领开发者从Angular 1 引导向Angular2,
Angular社区对Angular的取舍还是分成两大阵营。重写导致Angular的停滞不前和React逐渐火热,而这个势头正在加剧。

Angular2 能否和 Angular1
当初一样成功,并不能完全肯定,在Javascript社区也众说纷纭。Angular2
还是在Javascript和web开发的”未来”中有成功的可能性,但2016显然不是Angular2,特别是它还是在beta版本。对于那先不喜欢复杂
react app 需要配置很多东东的开发者来说,Angular2 还是可以选择的。

Meteor

Meteor在Github的关注和下载始终是稳固上升中,和React,Angular
的发展相似。这是一款轻量级、全栈式,并有鲜明特征的Javascript框架。很多开发者用它从框架中发现很多新颖有趣的地方。meteor被认为是一款原型式框架,而且对初级开发者非常友善,并且上手较快。

然而,当使用Meteor时又是另一种情况。那些学过 Angular1
或者是一些Rails的开发者都掌握了大量隐藏的魔法技巧,而这也会是阻碍Meteor成为主流的一个原因。

Meteor 不像 React 和 AngularJS, 企业中可能会有一些专业的开发人员,而
Meteor 没有,这也是不被考虑的因素之一。虽然 AngularJS
有很多问题,但有谷歌的技术团队撑腰。而使用 Meteor 不一样,
无论是前后端开发,都会存在很多的技术风险。Meteor要更广泛的被广大开发者使用,还需要解决很多问题。

更别提那些数据库问题,由于 Mongodb 是 Meteor
的默认数据库,而一些开发者对MongoDB的开发模式不是很感兴趣(阅后即焚的小型数据库)。

Meteor运行必须要依赖 SQL,而这点也没有得到很好的支持。

不用说,Meteor
在2016甚至2017年能够占到的份额都会比较少。对于构建大型负载的应用,大部分专业开发者对这个技术,还是持保留意见的。

检查

要调试JavaScript,我们使用内嵌在浏览器中的开发工具,几乎所有的浏览器中都会有检查面板,通过它你可以查看页面的源码,你可以查看JavaScript的执行,在终端上打印调试状态,还可以查看网络请求和回复。

这里是Chrome开发工具指南,如果你使用的是Firefox,你可以查看这个指南

Chrome开发者工具

网站真的需要 React、需要同构 JavaScript 吗?

好吧,那我们就重构代码,但是网站真的需要 React、需要同构 JavaScript
吗?我知道,这些技术都很酷,我们也想用。但是,我们真的愿意每六个星期就重写整个前后端代码吗?

新技术日新月异,尤其是 JavaScript
方面的。新技术每月都会出现,而且也有公司在推动着这些新技术。

如果某项技术是 Google 出品或 Facebook 出品,那么它一定很酷是吧?因为
Google、Facebook 的这帮家伙们知道他们自己在做什么。

图片 18

所以当时就去了解了下 React,还看了看他们介绍 React 和 Flux
的那次演讲,会上他们基本上就说了这些:

“我们在 Facebook
上遇到了消息通知方面的问题,当消息被阅读了以后,状态并没有更新。”

“我们的这个 MVC 项目很糟糕,因为 MVC
本身就很糟糕,所以这个项目并没有很好地运行,所以我们发明了 Flux。”

当时,我的反应是这样的:“我勒个去,这都可以!?”

图片 19

从什么时候箭头可以从 View 层画到 Model 层了?我认为这是错误的。

之后有一个问答环节,但是并没有人提问。在座的每个人可能都是这样想的,“恩恩,MVC
太逊了,我们确实需要 Flux。”

也许她是要表述一个观点,但是这个观点她并没有表述清楚。

然后我往下滚动页面,评论区有大量这样的评论,“这不对啊,这有问题啊,这根本就不是
MVC 啊!”

图片 20

真搞不明白发布会上他们都在说什么。演讲完了,每个人都感觉 “恩,MVC
是挺逊的,我们确实需要 Flux,因为 Flux 解决了我们所有的问题…”

不过,说实话,我也没有资格谴责他们。我在会上的问答环节也没有站起来说“这个不对”,因为我向来就比较谦虚,我总是认为别人说的都是对的。~^.^~

webAPI的未来 : GraphQL vs REST

2016年,在Facebook宣布开源GraphQL之后,这使得大量的JavaScript开发人员开始从事它的研究。特别是在开源项目上,Facebook在苹果的JavaScript领域做了很多贡献:

GraphQL目标是替代REST
API,但REST
API已经应用的更加广泛了,这是不太可能的情况:

rest vs graphql

GraphQL很难取代REST API。充其量,它可以补充REST
API所提供不到的东西。而且,GraphQL仍然比较新,还很依赖Facebook,所以它没有足够的学习资源来让开发者来提高。因此,2016年对于GraphQL来说,还是不足以使引起开发者的足够兴趣。2017年也许会改变,但是2016年5月30号在AngelList中可以看到,仅仅只有6个招聘是对GraphQL有需求。所以你可以不必急于学习它。

Imperative vs. Declarative

JavaScript和DOM如何交互,有两种方法:imperative和declarative,一方面,declarative程序专注于what,另一方面,imperative程序专注于how

var hero = document.querySelector('.hero')
hero.addEventListener(‘click’, function() {
  var newChild = document.createElement(‘p’)
  newChild.appendChild(document.createTextNode(‘Hello world!’))
    newChild.setAttribute(‘class’, ‘text’)
    newChild.setAttribute(‘data-info’, ‘header’)
    hero.appendChild(newChild)
 })
}

上面是一个imperative程序的列子,我们手动查询出一个元素,并且将UI状态存储在里面,换句话说,该程序核心在于如何(how)完成某件事情。这段程序的最大问题是它不够稳定:如果某个人修改了这段代码中的类名,例如将hero修改为villain,该监听事件将不会被触发,因为DOM中不在有hero类了。

Declarative程序解决了这个问题,你可以把选择元素的操作留给框架或库去完成。这种做法让你专注于做什么(what)而不是如何这样做(how)。想要了解更多,读一下JavaScript的状态——从Imperative到Declarative和3D
Web 开发 #1: Declarative vs.
Imperative

这篇指南首先告诉你imperative方法,然后才是Angular和React库的declarative方法,我建议按照这样的顺序学习,可以让你更清楚的了解到declarative解决了什么问题。

代码的破窗效应

我最喜欢的一个理论是破窗效应–这个理论也可以应用到代码上。

想象一下,你身处一座城市,站在一座高楼面前,周围的一切都很美好。然后突然一个哥们儿跑过来打破了一扇窗户。

如果你等上几个星期再回去看,你会发现整座高楼开始腐烂,摇摇欲坠,到处都是乱七八糟的涂鸦,人们也不再
care 它了。

同样这也适用于代码,那些临时的解决方案就是高楼上的破窗,是吧?

“恩,是的,我们改天再改吧。”

然后那些临时的代码片段还保留在那里,然后等到下一个开发人员(有可能还是你噢)过来看了看这代码,然后说:

“好吧,这个已经很糟糕了,我们快速修复下,然后代码又变得糟糕了。”

所有这些丑陋的代码片段都充斥在你的代码里。就算十年过去了,你还是得处理这些代码,所以你为什么不提前和你的小伙伴商量一下?你应该这样想:

“这是一个旧项目了,让我们把这个项目重写一遍吧。”–因为这就是我们喜欢的做事的方式,对吧?

图片 21

我经常听到开发者这样说
“看,这个项目是我们两年前写的,整个技术栈都已经落伍了,我们把所有的东西都重写一遍吧,很简单的,两周就能搞定!我们已经开搞了是吧?”

图片 22

我们知道软件都有一个饱和曲线。有时候给代码添加新的特性确实很困难,所以这时候重写代码更换技术栈是完全没有问题的,但是你得注意这里的这个缺口。

当你切到一个新的技术栈时,项目就变得复杂了,从一开始就不会有相同的功能特性。

因为在整个系统中整合了很多固有的东西,所以你不能轻易重做。所以你必须意识到,如果你从头开始做某事,那么至少会有一个特性差距。

桌面应用的对决:Nw.js vs Electron

如今,大量的软件需要同步数据到不同的平台(即,手机和桌面)。大部分都是起源于web
app,之后再创建桌面应用, 而为了更好的用户体验,web
app升级会更快,并且更容易。更何况,用户在什么都不装的情况下,都可能会卸载你的产品。由于体验不好,所以这是个比较大的考验。

在过去,人们为了那些web技术开发前端UI的桌面app产品,收到了CEF技术的验证。这并不容易,而且这些应用还没有真正的跨平台兼容。自从2014年,Node.js的出现,桌面应用框架可以很好的使用web技术开发,并处理跨平台的问题。但之后便没有出现新的东东。

如今,在该领域任有两个主要的技术:Nw.js(node-webkit原身)和Electron。虽然两者都是不错的选择,有自己的优势,这篇文章是关于发展趋势。

因此,让我们来看看两个项目在Github上的关注情况:

nwjs vs electron

出自 Star
History

虽然Nw.js出道较早,而且较为成熟,但Electron却以指数形式增长,而nw.js的增长看上去是平稳的线性的。

等等!由于Electron是在GitHub诞生的,考虑到GitHub上关注的公正性,我们去看下Google趋势,但好像或多或少反映了同样的情况:

nw.js vs electron

Electron比较新,但已经用在了一些知名公司比如Slack、微软、WordPress和Sencha.(Codementor
也用了Electron做了它的桌面应用)。Electron的简单易用,使得它的生态系统和社区平台也逐渐壮大。它的火热程度可能会延续到2017,使用Electron框架开发桌面应用,应该是开发者现在最好的选择。

风格指南

JavaScript风格指南是一组代码规范,它会帮助你设计具有可读性和可维护性高的代码。

  • AirBnB的编码规范
  • 常用的JavaScript原则
  • Node编码规范
  • MDN编码规范

相关文章

No Comments, Be The First!
近期评论
    功能
    网站地图xml地图