Skip to content

Commit

Permalink
fix typo
Browse files Browse the repository at this point in the history
  • Loading branch information
TroyCode committed Feb 21, 2018
1 parent cc08306 commit b868047
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 8 deletions.
3 changes: 1 addition & 2 deletions Ch01/front-end-introduction.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
![Web 前端工程入門簡介](./images/frameworks.png "Web 前端工程入門簡介")

## 前言
隨著現代化網頁(Modern Web)開發專業和複雜性的提昇以及對於使用者體驗的要求下,網頁開發已從過去的 Web Develpoer 一夫當關,轉向專業分工,更加細分成網頁前端(Web Front End)、網頁後端(Web Back End)等職位。此外,由於跨平台、跨瀏覽器的需求日益增加,技術變化更迭快速,市場上對於前端工程師(Web Front End Engineer)的需求也與日俱增,前端工程的(Front End Engineering)所要面對的挑戰也越來越多。
隨著現代化網頁(Modern Web)開發專業和複雜性的提昇以及對於使用者體驗的要求下,網頁開發已從過去的 Web Developer 一夫當關,轉向專業分工,更加細分成網頁前端(Web Front End)、網頁後端(Web Back End)等職位。此外,由於跨平台、跨瀏覽器的需求日益增加,技術變化更迭快速,市場上對於前端工程師(Web Front End Engineer)的需求也與日俱增,前端工程的(Front End Engineering)所要面對的挑戰也越來越多。

![Web 前端工程入門簡介](./images/html-css-js.png "Web 前端工程入門簡介")

Expand All @@ -25,4 +25,3 @@
| [回首頁](https://github.com/kdchang/reactjs101) | [下一章:React 生態系(Ecosystem)入門簡介](https://github.com/kdchang/reactjs101/blob/master/Ch01/react-ecosystem-introduction.md) |

| [勘誤、提問或許願](https://github.com/kdchang/reactjs101/issues) |

12 changes: 6 additions & 6 deletions Ch01/react-ecosystem-introduction.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,12 @@

![React 生態系(Ecosystem)入門簡介](./images/react-eco-wp.gif "React 生態系(Ecosystem)入門簡介")

根據 [React 官方網站](https://facebook.github.io/react/) 的說明:React 是一個專注於 UI(View)的 JavaScript 函式庫(Library)。自從 Facebook 於 2013 年開源 React 這個函式庫後,相關的生態系開始蓬勃發展。事實上,透過學習 React 生態系(ecosystem)的過程中,可以讓我們順便學習現代化 Web 開發的重要觀念(例如:模組化、ES6+、Webpack、Babel、ESLint、函數式程式設計等),成為更好的開發者。
根據 [React 官方網站](https://facebook.github.io/react/) 的說明:React 是一個專注於 UI(View)的 JavaScript 函式庫(Library)。自從 Facebook 於 2013 年開源 React 這個函式庫後,相關的生態系開始蓬勃發展。事實上,透過學習 React 生態系(ecosystem)的過程中,可以讓我們順便學習現代化 Web 開發的重要觀念(例如:模組化、ES6+、Webpack、Babel、ESLint、函數式程式設計等),成為更好的開發者。

## ReactJS
ReactJS 是 Facebook 推出的 JavaScript 函式庫,若以 MVC 框架來看,React 定位是在 View 的範疇。在 ReactJS 0.14 版之後,ReactJS 更把原先處理 DOM 的部分獨立出去(react-dom),讓 ReactJS 核心更單純,也更符合 React 所倡導的 `Learn once, write everywhere` 的理念。事實上,ReactJS 本身的 API 相對單純,但由於整個生態系非常龐大,因此學習 React 卻是一條漫長的道路。此外,當你想把 React 應用在你的應用程式時,你通常必須學習整個 React Stack 才能充分發揮 React 的最大優勢。

## JSX
## JSX
事實上,JSX 並非一種全新的語言,而是一種語法糖([Syntatic Sugar](https://en.wikipedia.org/wiki/Syntactic_sugar)),一種語法類似 [XML](https://zh.wikipedia.org/wiki/XML) 的 ECMAScript 語法擴充。在 JSX 中 HTML 和組建這些元素標籤的程式碼有緊密的關係,這和過去我們強調 HTML、JavaScript 分離的觀念有很大不同。當然,你可以選擇不要在 React 使用 JSX,不過相信我,當你真正開始撰寫 React 元件(Component)時,你會很慶幸有 JSX 真好。

## NPM
Expand All @@ -23,7 +23,7 @@ NPM(Node Package Manager)是 Node.js 下的主流套件管理工具。在 NP
隨著 Web 應用程式的複雜性提高,JavaScript 模組化開發已經成為必然的趨勢,以下簡單介紹 JavaScript 模組化的相關規範。事實上,在一開始沒有官方定義的標準時出現了各種社群自行定義的規範和實踐。

1. CDN-Based

也就是最傳統的 `<script>` 引入方式,然而使用這種方式雖然簡單方便,但在開發實際中大型應用程式時會產生許多弊端:

- 全域作用域容易造成變數污染和衝突
Expand All @@ -36,7 +36,7 @@ NPM(Node Package Manager)是 Node.js 下的主流套件管理工具。在 NP
[Asynchronous Module Definition](https://en.wikipedia.org/wiki/Asynchronous_module_definition) 簡稱 AMD,為非同步載入模組的規範,其在宣告時模組時即需定義依賴的模組。AMD 常用於瀏覽器端,其最著名的實踐為 [RequireJS](http://requirejs.org/)

基本格式:
```js
```js
define(id?, dependencies?, factory);
```

Expand Down Expand Up @@ -83,14 +83,14 @@ NPM(Node Package Manager)是 Node.js 下的主流套件管理工具。在 NP
[React Router](https://github.com/reactjs/react-router) 是 React 中主流使用的 Routing 函式庫,透過 URL 的變化來管理對應的狀態和元件。若開發不刷頁的單頁式(single page application)的 React 應用程式通常都會需要用到。

## Flux/Redux
[Flux](https://facebook.github.io/flux/) 是一個實現單項流的應用程式資料架構(architecture),同樣是由 Facebook 推出,並和 React 專注於 View 的部份形成互補。而由 Dan Abramov 所開發的 [Redux](https://github.com/reactjs/redux) 被 React 開發社群認為是 Flux-like 更優雅的作法,也是目前主流搭配 React 的狀態(State)管理工具。讓你在開發複雜的應用程式時可以更方便管理你的狀態(state)。
[Flux](https://facebook.github.io/flux/) 是一個實現單向流的應用程式資料架構(architecture),同樣是由 Facebook 推出,並和 React 專注於 View 的部份形成互補。而由 Dan Abramov 所開發的 [Redux](https://github.com/reactjs/redux) 被 React 開發社群認為是 Flux-like 更優雅的作法,也是目前主流搭配 React 的狀態(State)管理工具。讓你在開發複雜的應用程式時可以更方便管理你的狀態(state)。

## ImmutableJS
[ImmutableJS](https://facebook.github.io/immutable-js/),是一個能讓開發者建立不可變資料結構的函式庫。建立不可變(immutable)資料結構不僅可以讓狀態可預測性更高,也可以提昇程式的效能。

## Isomorphic JavaScript
Isomorphic JavaScript 是指前後端(Client/Server)共用相同部分的程式碼,讓 JavaScript 應用可以同時執行在瀏覽器端和伺服器端,在 React 中可以透過伺服器端渲染(server side rendering)靜態 HTML 的方式達到 Isomorphic JavaScript 效果,讓 SEO 和執行效能更加提昇並讓前後端共用程式碼。而另一個常一起出現的 Universal JavaScript 一般定義更為廣泛,係指可以運行在不同環境下的 JavaScript Code,並不局限於瀏覽器和伺服器端。但要留意的是在 Github 和許多技術文章的分享上會把兩者定義為同一件事情。

## React 測試
Facebook 本身有提供 [Test Utilities](https://facebook.github.io/react/docs/test-utils.html),但由於不夠好用,所以目前主流開發社群比較傾向使用 Airbnb 團隊開發的 [enzyme](https://github.com/airbnb/enzyme),其可以與市面上常見的測試工具([Mocha](https://mochajs.org/)[Karma](https://karma-runner.github.io/)、Jest 等)搭配使用。其中 [Jest](https://facebook.github.io/jest/) 是 Facebook 所開發的單元測試工具,其主要基於 [Jasmine](http://jasmine.github.io/) 所建立的測試框架。Jest 除了支援 JSDOM 外,也可以自動模擬 (mock) 透過 `require()` 進來的模組,讓開發者可以更專注在目前被測試的模組中。

Expand Down

0 comments on commit b868047

Please sign in to comment.