面向 Web 前端的原生语言总结手册
這一系列文章旨在讓具有 Web 前端背景的開發(fā)者快速上手原生語(yǔ)言。
背景與動(dòng)機(jī)
從 WebView 到 Hybrid 再到 React Native,移動(dòng)端主流技術(shù)方案中前端同學(xué)的施展空間越來(lái)越大。但傳統(tǒng) Web 前端背景的同學(xué)所熟悉的編程語(yǔ)言主要是 JavaScript,在與 Native 協(xié)作的邊界上很容易遇到掌控范圍之外的坑,這也是 RN 等方案經(jīng)常被詬病的理由之一。
然而,某一門具體的編程語(yǔ)言并不應(yīng)該成為生涯的瓶頸或阻礙。已經(jīng)熟悉某門主流語(yǔ)言的同學(xué),學(xué)習(xí)新語(yǔ)言的速度可以是非常快的。在這方面,C 領(lǐng)域的《Essential C 》就是一個(gè)很好的例子:它假定讀者已經(jīng)熟練掌握了一門編程語(yǔ)言,從而忽略了入門編程初期大量瑣碎的新手向知識(shí)點(diǎn),直接向讀者展示 C 的核心特性,讓讀者能夠非常迅速地上手 C 語(yǔ)言(注意這和精通是兩回事)。對(duì)于這份教程而言,讓已有 JavaScript 背景的同學(xué)能夠迅速觸類旁通地了解原生語(yǔ)言特性及其后的原理,從而邁過(guò)跨端開發(fā)的一個(gè)坎,就是我們的初心。
目前這個(gè)項(xiàng)目還處于連載中的早期階段,歡迎任何形式的反饋與參與。
要求與目標(biāo)
這份教程對(duì)讀者的要求只有一點(diǎn):熟悉 JavaScript。而在學(xué)習(xí)目標(biāo)層面,請(qǐng)首先明確這份教程不能做到什么:
- 讓你達(dá)到精通水平:請(qǐng)慎用這個(gè)詞。
- 讓你成為移動(dòng)端開發(fā)者:特定的編程語(yǔ)言只是平臺(tái)開發(fā)的子集。
- 讓你熟悉 IDE:這份教程會(huì)使用最簡(jiǎn)單的命令行編譯配置,無(wú)需 IDE。
與之相對(duì)地,這份教程的定位,是在這些場(chǎng)景下能夠讓你更快地達(dá)成目標(biāo):
- 你在基于 RN 等方案開發(fā),需要整合原生 SDK 或類庫(kù)。
- 你在 RN 等方案下踩到了 Native 的坑,希望能夠獨(dú)立調(diào)試解決。
- 你需要大致理解現(xiàn)有的 Objective-C 等應(yīng)用代碼,或進(jìn)行小修改。
如果這些場(chǎng)景命中了你,那么就別猶豫了,上車?yán)^續(xù)吧?
Getting Started
如何閱讀呢?從下面的鏈接開始就行了:
- C
- 重溫 Hello World - 介紹編譯環(huán)境外與編碼風(fēng)格等基礎(chǔ)。
- 變量與類型 - 介紹常常被 JS 程序員忽略的類型系統(tǒng)到底有多么重要。
- 控制流 - 介紹日常司空見慣的 for 和 while 循環(huán)是怎樣和底層機(jī)制聯(lián)系起來(lái)的。
- 函數(shù)調(diào)用與棧 - 介紹原生語(yǔ)言是如何復(fù)用代碼段的。
- 指針與引用 - 介紹我們需要區(qū)分基本類型和引用類型的理由。
- 結(jié)構(gòu)體與堆 - 介紹對(duì)象的雛形與內(nèi)存管理的概念。
- Objective-C
為什么從 C 開始呢?一方面,WASM 和 WebGL 中少不了 C 的影子,而更主要的是,C 的內(nèi)容其實(shí)非常少,并且有一個(gè)非常好的思維模型,能夠幫助你理解編程語(yǔ)言的核心特性,從而更容易地通過(guò)類比來(lái)掌握其它語(yǔ)言。例如作為 C 的超集,Objective-C 中就有許多 C 的影子。從 C 開始能夠讓你更好地理解它的特性為何這么設(shè)計(jì),從而更好地理解其它編譯型的原生語(yǔ)言。當(dāng)然,如果你已經(jīng)熟悉了 C,你也可以直接跳過(guò)它,閱讀其它部分。
參與
非常歡迎各種形式的參與,包括但不僅限于問(wèn)題討論、勘誤指正與新增內(nèi)容?使用 GitHub 的 Issue 和 PR 來(lái)參與吧。
致謝
本系列文章的組織結(jié)構(gòu)參考了《Objective-C Programming The Big Nerd Ranch Guide》一書。
許可
CC 署名-禁止演繹
總結(jié)
以上是生活随笔為你收集整理的面向 Web 前端的原生语言总结手册的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 实现小程序canvas拖拽功能
- 下一篇: 【干货】十分钟读懂浏览器渲染流程