[ Javascript ] CTJS Note

Redux設計概念與實戰

Redux
簡報: http://slides.com/dmoon/redux-intro#

Why
  SPA more complecated
  data跟view分開, 類似angular, data只有一份,data changed -> view changed

React:
  data and view bind

Problem:
  props傳遞地獄

Redux
  predictabble state container

 三大原則

  • Single source of truth 單一資料來源
    • 整個應用的state存在一顆object tree中,並放在唯一的container(state)內
  • State is read only
    • 唯一改變state的方法就是觸發action(修改資料唯一方法)


Redux Flow

   Produc -> 畫面需要改變 -> 產生action
                                                                  |
                                          Server <- action -> dispatch -> reducer
                                                                                                           |
                                                                                          return newState -> 資料變更&view重繪

Action

  • js obj
  • type是必要的,表示 要執行的動作
  • 包含事件的描述與更新state所需要的相關資料

Action Creter

  • pure function, return an action
  • dispatch到reducer

Reducer

  • pure function
  • return new state
Store

  • 存放共用state的容器
  • immutable
    • 更新的時候都時回傳新的資料,不去污染舊的資料
Time Travelling Debugger (時間旅行除錯

--------------------------------------------------------------------------------------------------------------

Node.js and BOT

簡報 : http://slides.com/simonsun2001/bots#/

--------------------------------------------------------------------------------------------------------------

Angular 2

  支援Server-side render
  Augury - 開發工具
  支援多平台

  從框架轉向平台

  組成
    所有東西都是元件 Componet
  頁面的組成
     應用程式元件+樣板+樣式

  元件的組成

Template 範本
   HTML
Class         類別


  • Angular CLI (套件
    •   ng new demo1
    •   cd demo1
    •   npm install
    •   {{}} -> data binding
    •   [href]="item.href" -> property binding
    •   [(ng-model)] = "property" -> event binding
    •   (click) -> on click



--------------------------------------------------------------------------------------------------------------

React Native Intro

--------------------------------------------------------------------------------------------------------------

Nodejs 自動化

speaker: Spooky

lean production

  • transportation dev -> production
  • waiting -> 規格不清楚...etc
  • defects -> 透過QA,其他人在測試code
持續改善

  • 透明
    • 資料庫版控(Schema版控)
      • Sequelize
    • 環境版控
      • docker
    • 測試案例版控
      • Mocha
    • 建置指令的版控
      • npm, gulp, makefile (unix), package.json
    • 生產流程版控
  • jenkins 2 pipeline


Lightning talk

WebdriverIO
Common.js
Vue.js

Redux thunk
thunkify

thunk = delay
處理非同步的action






################### Hackpad Backup ###################

CTJS2016
歡迎大家參加這次中台灣JS Conf

hi 請問 slack 怎麼加入?是否有邀請自己的網址,謝謝。
開了一個 gitter: https://gitter.im/tcf2e/ctjs2016

  • JokerCatz : yooo 網路很卡甚至不通,但請不要再打 WIFI AP 出來,改用藍芽影響較小,感恩(現場線路沒5G且沒全吃頻寬,應該無解,倒是乖乖聽課啦?)
  •  ↑有帶線就插線吧,可是再插ap又會貴2.4G圈真亂G_Gby亞所
  • RayWay: wifi炸裂,、教網也炸裂,已放棄使用。求5G
  • 看不懂slack怎麼登入.....
  • 所以slack可以用?
  • 求slack邀請
  • 網路狀況已解決 請大家再試一次
  • 求slack邀請, too.



  • Redux 設計概念與實戰 Dmoon
為什麼需要 Redux ? 因為 SPA 越來越複雜

props 傳遞地獄,因為 react 元件中的 state 彼此獨立,無法達到中心化的管理。
中間如果有一層傳錯或者忘了傳,造成畫面不如預期的效果。

what is Redux?
Design Pattern
將 state 集中管理,javascript 狀態容器

single source of truth
將所有 app 需要的狀態存放在一顆 object tree 中,並放在唯一的container(store)內


state is read-only
唯一改變 state 的方法就是發起一個 action

Redux Flow

product -> PM -> Eng

view -> 畫面需要改變 -> 發出 action -> request -> dispatch -> Reducer -> Store -> (資料改變)-> view(重繪)
  • "Redux doesn't have a Dispatcher or support many stores" ->提供已經有看過其他Flux架構的人一點參考,基本上就是要改變view時,比方說按下某個按鈕呼叫action creator(function) -> 產生 action 物件 -> 把 action 物件丟給 reducer -> reducer 會把算完之後新的 state 拿去更新 store -> store 被更新後通知 view更新

  • Action
  • js object
  • type 必要的 key(表示要執行的動作)
  • 包含事件的描述與更新state所需要的相關資料
  • Action Creactor
  • pure function
  • 將 action dispatch 到 reducer
  • 以ajax為例子的話,action creator裡面可能包含了ajax請求本身,然後在最後success callback的地方產生一個action物件,再丟給reducer,記住reducer是一個pure function,所以就直接把action物件傳過去就好

  • Node.js 與 Bot 月牙天衝
簡報支援
gitbug支援

事前準備
★一張信用卡
  1. server - DigitalOcean
  1. Domain - GoDaddy
  1. SSL - GoGetSSL
  1. Line developer
  1. Facebook developer
  • LINE developer要有SSL才能用(所以一定要有domain),我忘了LINE developer能不能用Let's Encrypt,Let's Encrypt是免費的SSL,滿方便的
  • 感謝幫問QQ,講師和台下互相補充,聽起來LINE和Facebook好像都可以用Let's Encrypt的證書了 LINE在4/18加入let's encrypt

  • 新手上路之 40 分鐘學會 Angular 2 網站開發框架 Will保哥

之前的Slide(加減看)

NG2新特色
  • 偵測變更:比 ng1 快 10 倍
  • 渲染速度:比 ng1 快 5 倍
  • support pre-compiled templates
  • support server-side render ( node.js, asp.net )
  • 多平台

官方建議使用 typeScript 開發

NG2 組成:元件 component
Page = Component + Template + Style (最外層是App component)
Component = Template + Class + Metadata (p.13)

建立 ng2 開發環境

  • node.js 6.2.2
  • angular CLI
  • ng new yourProject

Component 要記得import,VS code整angular2整超好!

[innerHTML]=""輸出HTML內容

callCheckInApi

元件化的好處在於,好管理好修改。

  • React Native intro (chentsulin)

Release:
  • iOS 2015/01
  • Android 2015/09
  • 2 小時可以做出 Hello word app
  • 不用 build
  • iOS 更新 code 沒煩惱
  • 上述兩點限制於 JS 的部分,如果有用到 java / obj-c 的第三方原生模組,還是需要重新build
  • 爆炸性成長
  • 一年 98 次 release
  • 同一個 app 在 iOS 與 Android 中你的 Redux 只需要寫一次 !! (因為架構一樣啊)
  • StyleSheet: css inline style use flexbox
  • 支援 hot reload,甚至使用 chrome dev Tools 來 debug
  • 歡迎大家一起幫忙翻譯 React 生態相關文件。
  • 肌肉學習法?

  • 為 Node.js 專案打造專屬管家進行開發流程整合及健康檢測 Spooky蹤影
效率 = 產出/投入





The 7 Wastes
1. Defects
2. Overproduction
3. Transportation
4. Waiting
5. Inventory
6. Motion
7. Processing

資料庫版控
Node.js Sequelize Module

環境版控
Docker
測試案例版控 Testing is memory/ Using Mocha


建置指令版控 Bulid>Deploy>Test>Release
NPM、GULP、WEBPACK、MAKEFILE

生產流程版控
Jenkins2、Pipeline

CI/CD
永生
快速迭代驗證
累積開發能量
有效溝通

Checking

可視化

測試覆蓋率

Pull request trigger Jenkins auto testing 

Slack + Github + JenKins to auto publish message to relative developer about testing result

參考資料:


留言

張貼留言

這個網誌中的熱門文章

[MySQL] schema 與資料類型優化

[翻譯] 介紹現代網路負載平衡與代理伺服器