1. 程式人生 > >開發富應用和單頁面應用需要的知識

開發富應用和單頁面應用需要的知識

這個題目有點大, 因為對於開發富應用和SPA(單頁面應用, Single Page Application), 一個前端工程師需要掌握太多太多知識和工具了. 這裡只說我自己最近半年在摸索和研究前端富應用和SPA相關技術的過程中的一些經驗和總結.

選擇合適的開發IDE

一個好的IDE可以讓你敲鍵盤的次數大大減少, 我個人推薦使用Sublime Text, 速遞快, 功能強大, 可擴充, 這也是我目前正在使用的IDE.

選擇合適的開發語言

呃, 難道還有別的選擇? 開發前端應用不都是用Javascript麼? 對的, 因為現在有了CoffeeScript. 相比於Javascript的類C++/Java靜態語言語法, CoffeeScript提供了更貼近自然語言的動態語言語法, 更少的程式碼, 更少的語法漏洞, 更好的程式碼可讀性.

選擇合適的Javascript前端MVC框架

Javascript 程式很難除錯, 特別是當代碼行數超過一定量級之後. 為了讓程式邏輯更有條例, 與伺服器端的web框架類似, 前端也有很多Javascript庫或者框架提供了MVC或類MVC架構. 按照MVC架構進行設計, 可以很清晰地將Module(資料模組), View(頁面展示), Controller(使用者行為響應控制)進行分離. 對於小型web應用來說, 這可能無關緊要, 甚至MVC帶來的弊端會掩蓋它的優點, 但對於一個超過上千行的web應用來說, 一個清晰的程式架構可以極大地減少模組間的耦合性.

模組定義與載入管理

Javascript 語言自身不提供程式碼的載入管理, 當JavaScript程式碼分成多個模組, 處於不同檔案中時, 如何管理模組之間的依賴關係以及檔案的載入順序, 就會變成一個非常棘手的事情. 並且JavaScript自身不提供名字空間的管理, 不同模組, 不同的JavaScript庫之間的都有可能出現命名衝突.

目前前端使用最廣泛的前端AMD庫應當是RequireJS.當然還有淘寶玉伯的Seajs.

程式碼質量靜態檢查

Javascript程式碼的書寫格式非常自由, 甚至帶著錯都能執行下去, 這也是為什麼JavaScript程式碼很難除錯的原因之一.

進行程式碼質量的靜態檢查可以極大減少由於語法漏洞或者拼寫疏忽帶來的這些額外錯誤, 推薦使用

jshint. 如果使用CoffeeScript, 這步可以省略了, CoffeeScript編譯後的程式碼都能通過jshint的檢測.

單元測試

單元測試是一個非常大的話題, 我沒有辦法用簡短的一段話或者一篇文章將單元測試涉及到的方法和工具都介紹清楚.

技術大牛們都不願意做單元測試, 當然, 很少有軟體工程師願意承認自己不是技術大牛:). 因為人員, 時間或者其他各種因素, 很多軟體工程師們都願意首先捨棄單元測試, 去保證功能的實現.

這 裡我不想挑起爭論, 但我的經驗的確是, 從個人角度上看, 單元測試能很大加深程式設計師對程式碼的理解程度, 加速個人能力的提升; 從專案角度上看, 技術經理需要權衡當前的開發, 迴歸測試和後繼的程式碼維護成本之間的平衡, 然後決定是否實施單元測試, 以及多少程度的單元測試, 這是技術經理的職責.

在前端web應用中比較常用的單元測試框架包括:

Mock庫可以採用SinonJS. 如果願意, 還可以採用ShouldExpectChai等Assertion庫.

另外, 如果希望在持續整合中加入對測試的支援, 還需要加入Non-GUI瀏覽器的支援, 目前採用比較多的方案是:

Minification & Concatenation

為了提高web應用的載入速度, 必須對Javascript檔案, CSS檔案進行Minification和Concatenation, 根據經驗, 優化後的程式碼載入速度比優化前的要提高數倍.

常用的工具包括:

大部分開源的JavaScript構建工具都集成了對這些工具的支援, 因此沒必要在這些工具上面花太多精力. 使用了RequireJS的應用, 可以直接使用其自帶的r.js進行程式碼優化.

構建和部署

任 何web應用工程都需要構建和部署, 一個自動化的構建和部署指令碼能讓程式設計人員更加專注於應用本身, 而不被繁瑣的流程所困擾. 自動化的構建和部署是一個web前端專案最基本的要求, 當專案開始的時候, 專案組最好能在頭兩個迭代週期就完成自動化的構建和部署指令碼的開發.

目前使用比較多的構建工具有:

我個人比較傾向於grunt, 如果工程中用了RequireJSbbb(grunt擴充套件)是更好的選擇.

網路地址本例子工程中, 我使用grunt/bbb開發了構建和部署指令碼, 可以完成:

  • 檔案的複製和清除
  • CoffeeScript的編譯
  • JSHint
  • Minification & Concatenation
  • 在Phantom環境下執行Jasmine單元測試
  • Debug/Release Web伺服器

感興趣的人可以去看看上述例子工程的grunt.js配置檔案, 也可以將這個例子工程作為web前端專案的模板.

下面的幾點感觸和具體的技術細節無關, 但是我個人覺得, 對於每個想以程式設計作為自己職業規劃的程式設計師來說, 這幾點尤其重要.

瞭解業界的技術發展動態

軟體技術發展很快, 對於熱愛技術的程式設計師來說, 必須經常更新自己的知識, 才能保證自己不會落伍. 因此, 每天都需要花一定時間去閱讀, 瞭解行業最新的技術發展動態.

我的習慣是用Google Reader訂閱幾個經常更新的前端技術相關的RSS:

另外, 有些郵件週報也很不錯:

多閱讀開原始碼, 最好參與感興趣的開源專案

GitHub是一個非常有用的站點, 在上面能看到那些大牛們是怎麼討論問題, 如何思考問題, 以及如何實現或者修正的. 閱讀開源專案的文件能瞭解概要, 如果需要了解細節, 最有效的方式是閱讀程式碼, 特別是看針對問題的提交記錄.

善於利用網際網路工具

遇到問題的時候, 要知道如何去尋找問題的答案

StackOverflow是一個非常有名的程式設計問答站點, 我所遇到的大部分程式設計問題都能在上面找到答案, 即便沒有答案, 也能找到其他人對這個問題的考慮. 另外, 別忘了強大的Google Search. 如果Google被牆, 可以考慮用Bing. 我不喜歡百度, 因為其搜尋的命中率太低了.

善於使用雲端的工具

選擇合適的工具對於軟體專案來說, 可以極大地提高工作效率, 起到事半功倍的效果. 好的商業軟體大多需要支付鉅額的費用, 並且搞不好還水土不服. 為了控制成本, 可以多嘗試嘗試雲端的工具. 在知乎上有關於這些工具的討論, 大家有興趣可以去看看別人怎麼做的.

多參與技術社群活動, 學會分享

多參加技術社群的活動, 包括線上的技術解答, 以及線下的技術講座等. 分享越多, 獲得也就越多.

相關推薦

開發應用頁面應用需要知識

這個題目有點大, 因為對於開發富應用和SPA(單頁面應用, Single Page Application), 一個前端工程師需要掌握太多太多知識和工具了. 這裡只說我自己最近半年在摸索和研究前端富應用和SPA相關技術的過程中的一些經驗和總結. 選擇合適的開發IDE 一個好的IDE可以讓你敲鍵盤的

頁面應用頁面應用

單頁面應用(SinglePage Web Application,SPA) 只有一張Web頁面的應用,是一種從Web伺服器載入的富客戶端,單頁面跳轉僅重新整理區域性資源,公共資源(css、js等)僅需載入一次,常用於PC斷官網、購物網站等。 如圖: 多頁面應用(MultiPag

[譯] 用 Flask Vue.js 開發一個頁面應用

原文地址:Developing a Single Page App with Flask and Vue.js 原文作者:Michael Herman 譯文出自:掘金翻譯計劃 本文永久連結:github.com/xitu/gold-m… 譯者:Mcskiller

通過Blazor使用C#開發SPA頁面應用程式(3)

  今天我們來看看Blazor開發的一些基本知識。 一、Blazor元件結構  Blazor中元件的基本結構可以分為3個部分,如下所示: //Counter.razor //Directives section 指令部分 @page "/counter" //Ra

通過Blazor使用C#開發SPA頁面應用程式(4) - Ant Design Button

  前面學習了Blazor的特點、環境搭建及基礎知識,現在我們嘗試的做個實際的元件。   Ant Design是螞蟻金服是基於Ant Design設計體系的 UI 元件庫,主要用於研發企業級中後臺產品。目前官方是基於React和Angular實現的,今年也推出了Vue的實現。其元件涵蓋面

詳細解剖大型H5頁面應用的核心技術點

事件機制 設置 橫豎 模板 phone inline lib 優點 溢出 闡述下項目 Xut.js 開發中一個比較核心的優化技術點,這是一套平臺代碼,並非某一個插件功能或者框架可以直接拿來使用,核心代碼大概是6萬行左右(不包含任何插件) 。這也並非一個開源項目,不能

angular-頁面應用程序

開發人員 containe 數據接口 發送請求 href 站點 response 最大的 require 我們都知道angularjs是單一頁面應用程序,那什麽是單一頁面應用程序呢?單一頁面應用程序到底有什麽好處呢? 下面我們來看一下: 首先我覺得可以把頁面的響應模式分成這

spa頁面應用(angular)

當前 lar 文章 模板 ram rip 加載完成 brush 找到 本篇文章是對單頁面的一個簡單的基本邏輯操作,這個方法可以搭建基本的單頁面的邏輯結構。 簡單理解:單頁面應用,錨點值切換,一個路由對應一個頁面。 路由:此時會創建一個信息保存路由的信息,之後對頁面a

Oracle JET 頁面應用程序Router 使用(上)

模塊名 self. put pla function border routing 都是 功能   單頁面應用程序:使用一個進加載一次的網頁,如果頁面由於用戶的交互而改變,則僅繪制更改的頁面部分。   要創建單頁面應用程序需要使用 oj.Router 的虛擬導航來支持,oj

前端:將網站打造成頁面應用SPA

一次 顯示 row 增加 blank 觸發 完全 判斷 null 前端:將網站打造成單頁面應用SPA 前言 不知你有沒有發現,像Github、百度、微博等這些大站,已經不再使用普通的a標簽做跳轉了。他們大多使用Ajax請求替代了a標簽的默認跳轉,然後使用HTML5

SPA頁面應用router實現

gpo 路由 outer location 並不會 spa sta url lar spa 單頁面router 主要可以基於兩種方式實現:修改哈希和直接修改url 1.根據在使用location 修改哈希的時候,頁面不會刷新(angular1.x 路由采用) 2.根據h5

輕量級MVVM框架Vue.js快速上手(MVVM、SEO頁面應用

靈活 vue.js 課程 基礎 har rip 完成 crud 通過 輕量級MVVM框架Vue.js快速上手(MVVM、SEO單頁面應用、×××服務器端渲染、Nuxt.js) 網盤地址:https://pan.baidu.com/s/1LkhepNpGAtRjrxp_CVJ

Vue系列(1):頁面應用程序

str from logs 引擎 每次 應用 跳轉方式 新手上路 為什麽 前言:關於頁面上的知識點,如有侵權,請看 這裏 。 關鍵詞:SPA、單個 HTML 文件、全靠 JS 操作、Virtual DOM、hash/history api 路由跳轉、ajax 響應、按需

SPA 頁面應用程序。

his 頁面 過去的 兼容 獲取 應用 ajax請求 length 方法   看到這個問題,先說下自己的理解到的程度,再去參考做修正,爭取這一次弄懂搞清楚   自己的理解: 單頁面應用程序,解決瀏覽器獲取數據刷新頁面的尷尬,通過ajax請求獲取數據達到異步更新視圖的按鈕,原

教你怎樣快速建立Vue頁面應用

教你怎樣快速建立Vue單頁面應用 Vue.js是一套目前比較流行的構建使用者介面的漸進式框架,Vue 能夠為複雜的單頁應用程式提供驅動。廢話不多說,進入正題。 1.安裝: 首先您需要安裝npm,如何安裝npm,請參考node.js相關內容。 安裝vue $ npm install

頁面頁面應用的區別

雖然接觸web開發有一段時間了,但從頭開始構建一個完整的web專案的機會非常少,對於一些概念還很模糊,今天首先來梳理一下在應用開發中,單頁面應用和多頁面應用的區別。 其實從字面意思上理解,就很好理解了。 單頁面,顧名思義只有一個介面。 介面是通過URL來定位的,所以單頁面應用從頭到尾

React 如何優雅地寫頁面應用

 本文作者:張小龍,美團前端工程師,來自作者的知乎專欄 為了追求極致的使用者體驗,很多Web應用採用單頁面方式呈現,然而單頁面應用,往往對應著高複雜度,比如多層次路由配置、統一資料處理等,這需要專案有一個強大的技術架構和友好的構建環境來支撐。路由器,作為單頁面構建的基礎,對單頁

Vue系列(1):頁面應用程式

前言:關於頁面上的知識點,如有侵權,請看 這裡 。 關鍵詞:SPA、單個 HTML 檔案、全靠 JS 操作、Virtual DOM、hash/history api 路由跳轉、ajax 響應、按需載入、MVVM SPA 我們先來看一下在百科上面的解釋吧,emmmm,一般呢,我每次搜尋一些不懂的詞,都會

頁面應用在微信服務號下的登錄流程

感知 完成 cookie 它的 們的 方式 留下 sdk 思路 最近我們的小程序涉及到虛擬支付的問題,在ios端的支付被封掉了??,所以有了在服務號上搞一套H5版的小程序的需求。由於我們小程序是mpvue寫的,為了盡量復用之前的樣式和邏輯,選擇了前後端分離的模式,於是一段新

SPA(頁面應用)

1、單頁面應用(SPA)的概念: 1、single-page application是一種特殊的Web應用。它將所有的活動侷限於一個Web頁面中,僅在該Web頁面初始化時載入相應的HTML、JavaScript、CSS。一旦頁面載入完成,SPA不會因為使用者的操作而進行頁面的重新載入