如何選擇前端框架 Angular還是React

現(xiàn)在主流的前端框架由Angular React Vue。符合選擇框架使用是一個(gè)令人糾結(jié)的問題伪朽。由于本人只接觸過Angular和React就從這兩個(gè)框架分析一下如何進(jìn)行選擇

開始之前

在選擇任何工具的時(shí)候拆挥,我們都要首先考慮兩個(gè)問題:“它本身是好工具嗎?”,“它是否適合我的使用場(chǎng)景糟红?”
工具本身的問題:

  • 他的成熟度如何以及背后支持它的是誰?
  • 他有什么樣的特性乌叶?
  • 它使用什么樣的架構(gòu)盆偿,開發(fā)范式和模式?
  • 圍繞他的生態(tài)圈怎么樣准浴?
    自我反思的問題
  • 我和我的同事能否輕松的學(xué)會(huì)如何使用它事扭?
  • 他適合我的項(xiàng)目?
  • 它的開發(fā)體驗(yàn)怎么樣乐横?
    用這一系列問題求橄,可以評(píng)估任何工具,現(xiàn)在用Angular和React進(jìn)行一些比較葡公。
    其實(shí)嚴(yán)格來講罐农,拿Angular和React來比較是完全不公平的,因?yàn)锳ngular是一個(gè)成熟催什、功能完備的框架涵亏,而React只是一個(gè)UI庫。為了彌補(bǔ)差距蛆楞,我們談?wù)揜eact的時(shí)候溯乒,包含了一些它經(jīng)常使用的庫。

完備性

作為一個(gè)熟練的開發(fā)者的主要能力就是能夠在舊技術(shù)和前沿技術(shù)之間保持平衡豹爹。慣例是裆悄,當(dāng)采用還未成熟的新工具時(shí),應(yīng)注意一些風(fēng)險(xiǎn):

  • 工具可能有缺陷并且不穩(wěn)定
  • 他可能會(huì)被供應(yīng)商意外拋棄
  • 假設(shè)你需要幫助臂聋,可能沒有一個(gè)大型的知識(shí)庫或者成熟的社區(qū)

React

React 是由 Facebook 開發(fā)并維護(hù)的光稼,并且用在了他們自己的產(chǎn)品線上或南, 包括 Instagram 和 WhatsApp. 它已經(jīng)出現(xiàn)大約 3年半 了, 所以它已經(jīng)不算新了艾君。它也是Github上最流行的庫之一 采够,在撰寫本文的時(shí)候,它大約有60,000多個(gè) star冰垄。聽起來不錯(cuò)蹬癌。

Angular

Angular(2及以上)出現(xiàn)的比 React 晚一點(diǎn),但是如果算上之前的版本 AngularJS虹茶,情況就反過來了逝薪。它主要由 Google 維護(hù)并且用在AdWords 和 Google Fiber 產(chǎn)品上,很明顯他們對(duì)此很有信心蝴罪,顯然它不會(huì)短時(shí)間內(nèi)消失董济。
特性
像前文提到的,Angular 比 React 多些開箱即用的特性要门。這是有兩面性的虏肾,取決于你看待它的角度。 兩者的核心功能是相似的:組件欢搜,數(shù)據(jù)綁定和平臺(tái)無關(guān)的渲染

Angular

Angular 提供了很多現(xiàn)代 web 應(yīng)用所需的開箱即用的特性封豪。一些標(biāo)準(zhǔn)特性是:
依賴注入
以 HTML 的擴(kuò)展版本為基礎(chǔ)實(shí)現(xiàn)模板
由 @angular/router 提供路由功能
利用 @angular/http 實(shí)現(xiàn) Ajax 請(qǐng)求
利用 @angular/forms 創(chuàng)建表單
CSS 組件化
XSS 防御
單元測(cè)試組件
當(dāng)你自己不想花費(fèi)時(shí)間去挑選類庫的時(shí)候,有這么多開箱即用的特性是很方便的狂巢。 而這也意味著你被它們束縛在了一起撑毛,即使你不需要它們书聚。并且唧领,通常替換它們需要付出更多的努力。例如雌续,考慮到依賴注入可以用引入來替代斩个,我們相信使用它的小的項(xiàng)目相對(duì)于收益會(huì)付出更多的開銷。

React

使用 React驯杜,你的入門更加簡(jiǎn)單受啥。如果我們只看 React,那么只有:

  • 無依賴注入
  • JSX模板鸽心,通過 JavaScript 實(shí)現(xiàn)的類 XML 語言
  • XSS 防御
  • 單元測(cè)試組件

特性不多滚局,未必不是好事。這意味著根據(jù)需求選擇第三方類庫的時(shí)候顽频,你有更多的自由度藤肢。不好的是你不得不自己做出選擇。經(jīng)常與 React 一起使用的流行類庫有:

我們擁有了選擇類庫時(shí)的自由糯景。這讓我們可以根據(jù)每個(gè)項(xiàng)目的特定需求來調(diào)整我們的技術(shù)棧嘁圈,并且不會(huì)產(chǎn)生很高的學(xué)習(xí)成本省骂。

語言、范式和模式

回顧一下兩個(gè)框架的特性最住,讓我來看一下有哪些流行的高級(jí)概念钞澳。

React

當(dāng)研究 React 的時(shí)候,有一些重要的概念涌上心頭:JSX涨缚,F(xiàn)low轧粟,Redux

JSX

許多開發(fā)者對(duì) JSX 持不同的看法:有的人喜歡它,有的人認(rèn)為這是技術(shù)的巨大退步脓魏。不是遵循內(nèi)容與邏輯分離的傳統(tǒng)方法逃延,React 決定用一種類 XML 語言把兩者組合在一起放到組件中,這樣你可以在 JavaScript 代碼中直接編寫內(nèi)容標(biāo)記轧拄。
雖然關(guān)于標(biāo)記和邏輯混合寫法這個(gè)話題是有爭(zhēng)議的揽祥,但是它有一個(gè)明顯的優(yōu)勢(shì):靜態(tài)分析。如果你的 JSX 標(biāo)記中有錯(cuò)誤檩电,編譯器不會(huì)保持沉默拄丰,它會(huì)報(bào)出這個(gè)錯(cuò)誤。這能幫助我們立即發(fā)現(xiàn)拼寫錯(cuò)誤和其他一些愚蠢的錯(cuò)誤俐末。

Flow

Flow也是由 Facebook 開發(fā)的一款 JavaScript 的類型檢查工具料按。它能解析代碼并檢查一些常規(guī)的類型錯(cuò)誤,像隱式轉(zhuǎn)換或空引用卓箫。
不像有著相似目的的 TypeScript载矿,它不需要你遷移到一個(gè)新語言并且通過注釋你的代碼來進(jìn)行類型檢查。對(duì) Flow 來說烹卒,類型注釋是可選的闷盔,可以當(dāng)做分析器的額外提示。如果你想用靜態(tài)代碼分析旅急,但又不想重寫已有的代碼逢勾,對(duì)此而言 Flow 是一個(gè)不錯(cuò)的選擇。
[擴(kuò)展閱讀: Writing Better JavaScript with Flow]

Redux

Redux 是一個(gè)清晰的管理狀態(tài)變化的類庫藐吮。它受 Flux 的啟發(fā)溺拱,但是做了一些簡(jiǎn)化。Redux 的核心思想是用單個(gè)對(duì)象來代表應(yīng)用的整個(gè)狀態(tài)谣辞,該對(duì)象被叫做 reducers迫摔,通過函數(shù)實(shí)現(xiàn)。reducers 是純函數(shù)泥从,通過組件分別實(shí)現(xiàn)句占。這能更好的做到關(guān)注點(diǎn)與測(cè)試分離。
如果你正在做一個(gè)簡(jiǎn)單的項(xiàng)目歉闰,引入 Redux 可能會(huì)更加復(fù)雜辖众,但是對(duì)中大型項(xiàng)目來說卓起,它是一個(gè)很好的選擇。這個(gè)類庫變得非常流行凹炸,也可以用在 Angular 項(xiàng)目中實(shí)現(xiàn)戏阅。
所有的三項(xiàng)特性可以顯著的增強(qiáng)你的開發(fā)體驗(yàn):JSX 和 Flow 允許你快速的定位潛在錯(cuò)誤,Redux 幫助你搭建一個(gè)整潔的項(xiàng)目架構(gòu)啤它。

Angular

Angular 也有一些有趣的東西奕筐,叫 TypeScript 和 RxJS。

TypeScript

TypeScript 是一門在 JavaScript 基礎(chǔ)上变骡,由微軟開發(fā)的新語言离赫。他是 ES2015 的超集,并且包含了JS語言即將到來的新版本的一些特性塌碌。你能用它替代 Babel 來編寫最新的 JavaScript渊胸。它也提供了一個(gè)極其強(qiáng)大的類型檢查系統(tǒng),能夠通過注釋和類型推理靜態(tài)分析你的代碼台妆。
還有一個(gè)相當(dāng)微妙的優(yōu)勢(shì)翎猛。TypeScript 受 Java 和 .NET 的影響很深,所以如果開發(fā)者有那些語言背景接剩,他們會(huì)發(fā)現(xiàn) TypeScript 比原生 JavaScript 學(xué)起來更輕松(注意我們?nèi)绾胃鶕?jù)個(gè)人情況選擇工具)切厘。雖然 Angular 是第一個(gè)采用 TypeScript 的主要框架,但它和 React 用在一起懊缺,也是可行的疫稿。
[擴(kuò)展閱讀: An Introduction to TypeScript: Static Typing for the Web]

RxJS

RxJS 是一個(gè)響應(yīng)式的編程類庫,允許對(duì)異步的操作和事件做更加靈活的處理鹃两。它是利用函數(shù)式編程把觀察者模式和迭代器模式混合的組合體遗座。RxJS 允許你把一切都當(dāng)做是一個(gè)連續(xù)的流值,并且在此之上實(shí)現(xiàn)各種各樣的操作怔毛,像映射员萍,過濾腾降,拆分或合并拣度。
該類庫被 Angular 的 HTTP 模塊采用,也在一些內(nèi)部使用螃壤。當(dāng)你執(zhí)行一個(gè) HTTP 請(qǐng)求抗果,它返回一個(gè) Observable 替代通常的 Promise。雖然這個(gè)庫極其強(qiáng)大奸晴,但它也相當(dāng)?shù)膹?fù)雜冤馏。想要精通它,你需要知道不同類型的 “觀察者”寄啼,“主題” 逮光,以及上百種方法和操作符代箭。呀,這看起來只是執(zhí)行 HTTP 請(qǐng)求的一點(diǎn)小工作涕刚。
當(dāng)需要很多連續(xù)的數(shù)據(jù)流方面的工作的時(shí)候嗡综,比如 web sockets,在這種情況下 RxJS 是十分有用的杜漠,然而极景,這看起來仍然很復(fù)雜。無論如何驾茴,當(dāng)使用 Angular 的時(shí)盼樟,你至少要對(duì)此要有基本的了解。
[擴(kuò)展閱讀: Introduction to Functional Reactive Programming with RxJS]
我們發(fā)現(xiàn)在提高項(xiàng)目的可維護(hù)性上锈至,TypeScript 是一個(gè)強(qiáng)大的工具晨缴,尤其是那些代碼量巨大或業(yè)務(wù)邏輯十分復(fù)雜的項(xiàng)目。用 TypeScript 寫的代碼更容易閱讀與跟進(jìn)峡捡。雖然 Angular 已經(jīng)采用了 TypeScript喜庞,我們?nèi)匀幌M嗟捻?xiàng)目使用它。RxJS棋返,換句話說延都,看起來只在特定情況下有用并且要小心使用。否則睛竣,它能給你的項(xiàng)目帶去難以想象的復(fù)雜度晰房。

生態(tài)圈

關(guān)于開源框架很重要的事情是圍繞它而衍生出的工具數(shù)量。有時(shí)候射沟,那些工具甚至比框架本身更有用殊者。我們來看一下這兩個(gè)框架最流行的工具和類庫。

Angular

Angular 命令行工具

現(xiàn)代框架的流行趨勢(shì)是通過一個(gè)命令行工具來幫助初始化項(xiàng)目验夯,而不必親自配置猖吴。Angular 的工具叫 Angular CLI。它允許通過一系列的命令來生成和啟動(dòng)項(xiàng)目挥转。所有與創(chuàng)建應(yīng)用海蔽,啟開發(fā)環(huán)境,跑測(cè)試有關(guān)的腳本都被巧妙的隱藏在叫 node_modules 的文件夾中绑谣。你也能在開發(fā)期間通過它生成新的代碼党窜。這使得創(chuàng)建新項(xiàng)目十分的簡(jiǎn)單。
[擴(kuò)展閱讀: The Ultimate Angular CLI Reference]

Ionic 2

Ionic 2 是一款用來開發(fā)移動(dòng)端混合應(yīng)用的流行框架的新版本借宵。它提供了一個(gè)完美集成了 Angular 2 的 Cordova 容器幌衣,和一個(gè)漂亮的組件庫。通過它壤玫,可以輕松的創(chuàng)建移動(dòng)端應(yīng)用豁护。如果相比原生應(yīng)用更傾向于混合應(yīng)用哼凯,那么它將是一個(gè)不錯(cuò)的選擇。

Material design 組件

如果你鐘愛于 material design楚里,你可能很高興聽到 Material 組件庫可以用于 Angular挡逼。雖然當(dāng)前得到了諸多支持,但其仍然處于早期階段并且有點(diǎn)簡(jiǎn)陋腻豌,所以家坎,我們希望不久的將來能有所改善。

Angular universal

Angular universal 是一個(gè)種子項(xiàng)目吝梅,被用來創(chuàng)建支持服務(wù)端渲染的項(xiàng)目虱疏。

@ngrx/store

@ngrx/store 是受 Redux 啟發(fā),利用 pure reducers 基于狀態(tài)突變苏携,用于 Angular 狀態(tài)管理的類庫做瞪。通過集成 RxJS,可以利用變化偵測(cè)策略達(dá)到更好的性能右冻。
[擴(kuò)展閱讀: Managing State in Angular 2 Apps with ngrx/store]

這里有更多的類庫與工具 the Awesome Angular list.

React

Create react app

Create-react-app 是用于快速創(chuàng)建 React 項(xiàng)目的命令行工具装蓬。跟 Angular CLI 相似,它允許生成一個(gè)新項(xiàng)目纱扭,啟動(dòng)開發(fā)服務(wù)和打包牍帚。它用 Jest 做單元測(cè)試,一款來自于 Facebook 的比較新的測(cè)試工具乳蛾,本身有一些好的特性暗赶。它也支持通過環(huán)境變量做靈活的應(yīng)用分析,本地環(huán)境的后端代理肃叶,F(xiàn)low蹂随,和其他特性。更多內(nèi)容請(qǐng)查看 introduction to create-react-app

React Native

React Native 是由 Facebook 開發(fā)的因惭,用 React 編寫移動(dòng)端原生應(yīng)用的平臺(tái)岳锁。不像提供混合應(yīng)用的 Ionic,React Native 提供真正的原生界面蹦魔。它提供了一套用于綁定原生控件的標(biāo)準(zhǔn) React 組件激率。也允許使用Objective-C,Java 或 Swift等原生代碼編寫的組件綁定到它們上版姑。

Material UI

同樣柱搜,這是用于 React 的 material design 組件庫。跟 Angular 的版本相比剥险,這個(gè)更加成熟并且已經(jīng)有很多可用的組件。

Next.js

Next.js 是用于 React 應(yīng)用在服務(wù)端渲染的框架宪肖。它提供了一個(gè)靈活的方式在服務(wù)端全部或部分渲染應(yīng)用表制,返回結(jié)果給客戶端并繼續(xù)保持在瀏覽器中健爬。它嘗試完成一項(xiàng)復(fù)雜的任務(wù),盡可能簡(jiǎn)單的創(chuàng)建一個(gè)通用應(yīng)用么介,所以設(shè)置也被設(shè)計(jì)的盡可能簡(jiǎn)單娜遵。

MobX

MobX 是一個(gè)管理應(yīng)用狀態(tài)的可選庫。代替在一個(gè)單一穩(wěn)定的倉庫中保存狀態(tài)壤短,就像 Redux 所做的设拟,它鼓勵(lì)你盡量存儲(chǔ)所必須的最小狀態(tài)并且推導(dǎo)出剩下的。它提供了一套修飾符來定義可見性和觀察者和介紹狀態(tài)的邏輯變化久脯。
[擴(kuò)展閱讀: How to Manage Your JavaScript Application State with MobX]

Storybook

Storybook 是 React 的組件開發(fā)環(huán)境纳胧。它允許快速的創(chuàng)建單個(gè)應(yīng)用來展示你的組件。在此基礎(chǔ)上帘撰,它還提供了許多組件來記錄跑慕,開發(fā),測(cè)試和設(shè)計(jì)你的組件摧找。在應(yīng)用的其他部分核行,我們發(fā)現(xiàn)它在獨(dú)立開發(fā)組件上是極其有用的。在上一篇文章中蹬耘,你能學(xué)到 關(guān)于 Storybook 的更多知識(shí)芝雪。

這里有更多的類庫與工具 the Awesome React list.

接受度,學(xué)習(xí)曲線和開發(fā)體驗(yàn)

選擇一項(xiàng)新技術(shù)的重要標(biāo)準(zhǔn)就是學(xué)習(xí)它有多么的容易综苔。當(dāng)然绵脯,答案取決于很多因素,比如你之前的經(jīng)驗(yàn)休里,熟悉相關(guān)的概念和模式蛆挫。不管怎樣,給定一個(gè)框架我們?nèi)匀荒茉u(píng)估必須學(xué)習(xí)的新東西的數(shù)量∶钍颍現(xiàn)在悴侵,我們假設(shè)你已經(jīng)了解 ES6+,構(gòu)建工具和所有的這些拭嫁,讓我們看看你還必須要理解什么可免。

React

使用 React 遇到的第一個(gè)障礙就是 JSX。對(duì)有些開發(fā)者而言做粤,它寫起來頗為棘手浇借,然而,它并沒有增加太多的復(fù)雜性怕品;就像真正的 JavaScript 表達(dá)式妇垢,和特殊的類 HTML 語法。你也需要學(xué)習(xí)如何編寫組件,用屬性來配置和管理內(nèi)部狀態(tài)闯估。你不需要學(xué)習(xí)任何新的邏輯結(jié)構(gòu)與循環(huán)灼舍,因?yàn)樗械倪@些都是原生 JavaScript。
官方教程是入門 React 的優(yōu)秀資源涨薪。一旦你完成了它骑素,那么開始熟悉路由。React 路由 v4 版本可能有一些復(fù)雜和特別刚夺,但無需擔(dān)心献丑。使用 Redux 需要轉(zhuǎn)變范式,學(xué)會(huì)利用類庫建議的方式完成已經(jīng)熟悉的任務(wù)侠姑。免費(fèi)視頻教程 Getting Started with Redux 能夠幫助你快速熟悉一些核心概念创橄。根據(jù)項(xiàng)目的大小和復(fù)雜度你可能不得不尋找和學(xué)習(xí)一些額外的類庫,這可能是比較棘手的部分结借,但在這之后筐摘,一切都會(huì)順風(fēng)順?biāo)?br> 我們很驚喜入門 React 是如此的簡(jiǎn)單。甚至有后端經(jīng)驗(yàn)和前端經(jīng)驗(yàn)有限的人都能快速上手船老。有完善清晰的錯(cuò)誤提示咖熟,并且提供了如何解決潛在問題的解釋說明。最難的部分可能就是為所需功能尋找合適的類庫柳畔,但構(gòu)建和開發(fā)一個(gè)應(yīng)用真的十分簡(jiǎn)單馍管。

Angular

學(xué)習(xí) Angular 需要比 React 了解更多的概念。首先薪韩,你需要熟悉 TypeScript确沸。對(duì)于有靜態(tài)類型語言像 Java 或 .NET 使用經(jīng)驗(yàn)的開發(fā)者來說要比 JavaScript 更好理解,但對(duì)純 JavaScript 開發(fā)者而言俘陷,可能需要付出一些努力罗捎。
框架背身就有很多主題需要學(xué)習(xí),從基礎(chǔ)的開始像模塊拉盾、依賴注入桨菜、裝飾器、組件捉偏、服務(wù)倒得、管道、模板和指令夭禽,到高級(jí)主題像變化偵測(cè)霞掺、區(qū)塊、AoT編譯和 RxJS讹躯。這些此文檔中都可以找到菩彬。RxJS 本身就是很繁重的主題缠劝,在官方網(wǎng)站上有更多的描述。雖然從基礎(chǔ)水平上使用它比較容易挤巡,但要使用高級(jí)主題會(huì)十分的復(fù)雜剩彬。
總而言之酷麦,我們注意到使用 Angular 要比 React 難得多矿卑。眼花繚亂的新概念對(duì)新手來講十分的困惑。即使你已經(jīng)入門了沃饶,你也需要時(shí)刻注意像 RxJS 訂閱管理母廷,變化偵測(cè)性能和未知的東西(是的,這是來自文檔實(shí)際建議)糊肤。我們會(huì)經(jīng)常遇到難以理解的錯(cuò)誤信息琴昆,所以不得不經(jīng)常檢索它們并祈求得到一個(gè)精準(zhǔn)的匹配。
這看起來好像我們更傾向于 React馆揉,的確是业舍。結(jié)合我們利用同樣大小和復(fù)雜度的 Angular 和 React 項(xiàng)目,對(duì)新手開發(fā)者進(jìn)行培訓(xùn)的經(jīng)驗(yàn)升酣,React 更加的順滑舷暮。但是,像我之前所說的噩茄,這取決于多種因素下面,可能對(duì)你來說會(huì)有所不同。

契合度

你可能已經(jīng)注意到每個(gè)框架都有它本身一系列的功能绩聘,有好的也有壞的沥割。但在特定環(huán)境外的分析已經(jīng)完成并且沒能在選擇哪個(gè)框架上給出答案。為了做出決定凿菩,你不得不從你自己項(xiàng)目的角度來考查它机杜。這些事情需要你自己來做。
現(xiàn)在衅谷,結(jié)合你的項(xiàng)目試著回答下面這些問題椒拗,順便想想是否符合關(guān)于這兩個(gè)框架你已經(jīng)學(xué)到的特性。列表可能還不完全会喝,但是應(yīng)該夠開始討論了:

  1. 項(xiàng)目有多大陡叠?
  2. 要維護(hù)多久?
  3. 所有的功能都被提前定義好還是你希望靈活一些肢执?
  4. 如果所有的特性已經(jīng)明確枉阵,你需要什么功能?
  5. 應(yīng)用場(chǎng)景和業(yè)務(wù)邏輯是否復(fù)雜预茄?
  6. 針對(duì)哪些平臺(tái)兴溜?Web端侦厚,移動(dòng)端,桌面端拙徽?
  7. 是否需要服務(wù)端渲染刨沦? SEO 重要么?
  8. 是否需要處理許多實(shí)時(shí)事件流膘怕?
  9. 你的團(tuán)隊(duì)有多大想诅?
  10. 開發(fā)者的經(jīng)驗(yàn)和他們的知識(shí)背景如何?
  11. 是否有一些你想用的現(xiàn)成組件庫岛心?
    如果你打算啟動(dòng)一個(gè)大項(xiàng)目来破,你可能想最小化做出不當(dāng)選擇的風(fēng)險(xiǎn),首先考慮做一個(gè)概念性的驗(yàn)證產(chǎn)品忘古。使用框架徘禁,通過簡(jiǎn)單方式,試著實(shí)現(xiàn)項(xiàng)目的一些關(guān)鍵特性髓堪。這通常不會(huì)花費(fèi)你太多的時(shí)間送朱,但會(huì)給你一些有價(jià)值的經(jīng)驗(yàn)來驗(yàn)證關(guān)鍵技術(shù)需求。如果你對(duì)結(jié)果滿意,你可以繼續(xù)進(jìn)行完整的開發(fā)。如果不滿意建瘫,從長遠(yuǎn)來看其實(shí)節(jié)省了你的時(shí)間凤类。

一招絕?

一旦你為你的項(xiàng)目選擇了一個(gè)框架,你將會(huì)在接下來的項(xiàng)目中忍不住的想用同樣的技術(shù)棧。不要這樣。雖然保持技術(shù)棧統(tǒng)一是一個(gè)不錯(cuò)的注意鹉戚,但不要總是使用同樣的方法。每一個(gè)項(xiàng)目開始之前专控,花點(diǎn)時(shí)間再回答一遍上面的問題抹凳。可能對(duì)下個(gè)項(xiàng)目而言伦腐,答案就不一樣了赢底。另外,如果你想用不熟悉的技術(shù)棧做一個(gè)小項(xiàng)目柏蘑,做吧幸冻。這些經(jīng)歷會(huì)帶給你寶貴的經(jīng)驗(yàn)。開放你的思維咳焚,并且從錯(cuò)誤中不斷學(xué)習(xí)洽损。在某一點(diǎn),一項(xiàng)特定的技術(shù)會(huì)讓你自然而然的覺得正確革半。

原文鏈接:https://www.cnblogs.com/dadifeihong/p/6958337.html

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末碑定,一起剝皮案震驚了整個(gè)濱河市流码,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌延刘,老刑警劉巖漫试,帶你破解...
    沈念sama閱讀 206,126評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異碘赖,居然都是意外死亡驾荣,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門崖疤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來秘车,“玉大人典勇,你說我怎么就攤上這事劫哼。” “怎么了割笙?”我有些...
    開封第一講書人閱讀 152,445評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵权烧,是天一觀的道長。 經(jīng)常有香客問我伤溉,道長般码,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,185評(píng)論 1 278
  • 正文 為了忘掉前任乱顾,我火速辦了婚禮板祝,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘走净。我一直安慰自己券时,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評(píng)論 5 371
  • 文/花漫 我一把揭開白布伏伯。 她就那樣靜靜地躺著橘洞,像睡著了一般。 火紅的嫁衣襯著肌膚如雪说搅。 梳的紋絲不亂的頭發(fā)上炸枣,一...
    開封第一講書人閱讀 48,970評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音弄唧,去河邊找鬼适肠。 笑死,一個(gè)胖子當(dāng)著我的面吹牛候引,可吹牛的內(nèi)容都是我干的侯养。 我是一名探鬼主播,決...
    沈念sama閱讀 38,276評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼背伴,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼沸毁!你這毒婦竟也來了峰髓?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,927評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤息尺,失蹤者是張志新(化名)和其女友劉穎携兵,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體搂誉,經(jīng)...
    沈念sama閱讀 43,400評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡徐紧,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了炭懊。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片并级。...
    茶點(diǎn)故事閱讀 37,997評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖侮腹,靈堂內(nèi)的尸體忽然破棺而出嘲碧,到底是詐尸還是另有隱情,我是刑警寧澤父阻,帶...
    沈念sama閱讀 33,646評(píng)論 4 322
  • 正文 年R本政府宣布愈涩,位于F島的核電站,受9級(jí)特大地震影響加矛,放射性物質(zhì)發(fā)生泄漏履婉。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評(píng)論 3 307
  • 文/蒙蒙 一斟览、第九天 我趴在偏房一處隱蔽的房頂上張望毁腿。 院中可真熱鬧,春花似錦苛茂、人聲如沸已烤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽草戈。三九已至,卻和暖如春侍瑟,著一層夾襖步出監(jiān)牢的瞬間唐片,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評(píng)論 1 260
  • 我被黑心中介騙來泰國打工涨颜, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留费韭,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,423評(píng)論 2 352
  • 正文 我出身青樓庭瑰,卻偏偏與公主長得像星持,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子弹灭,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 本文來自于:葡萄城控件技術(shù)團(tuán)隊(duì)博客 如今督暂,Angular和React這兩個(gè)JavaScript框架可謂紅的發(fā)紫揪垄,同...
    zenmshuo_2919閱讀 603評(píng)論 0 2
  • Foreword: 首先那要說明下,以下是我看到的一篇文章逻翁,但是原文是英文的饥努,我只是做一個(gè)搬運(yùn)工把他搬過來~主要也...
    Howie126313閱讀 10,806評(píng)論 4 41
  • 今天見一大姐,運(yùn)動(dòng)想到了自己八回,多年來酷愧,為了健康,尋找各種方法缠诅,運(yùn)動(dòng)溶浴,飲食,隨身體有所改變管引,但效果很小 如果人懂得身...
    黃向真閱讀 362評(píng)論 1 1
  • #250 · 匿名 | 表白 4天前 其實(shí)是因?yàn)樘诤跏堪堋⑴率ァ⑺宰兊贸C情汉匙、愛吃醋拱烁、我會(huì)改的、你會(huì)是和我走完這一...
    山工院表白墻閱讀 141評(píng)論 0 0
  • 新的一天開始了邦投,終于有人“管制”我伤锚,讓我老老實(shí)實(shí)拿起筆來。參加這個(gè)團(tuán)隊(duì)志衣,只是為了能天天寫字屯援,恩,寫字念脯。這樣做狞洋,會(huì)讓...
    耳聆心閱讀 163評(píng)論 0 1