摘要:很長(zhǎng)一段時(shí)間就想把引入公司的項(xiàng)目,但總是因?yàn)橐恍┰虮粩R置。接下來有機(jī)會(huì)重構(gòu)之前的項(xiàng)目,借此機(jī)會(huì)正好可以引入,為了使后期的項(xiàng)目架構(gòu)更加完善,近期我會(huì)梳理的一些知識(shí)點(diǎn)和新特性。
很長(zhǎng)一段時(shí)間就想把ts引入公司的項(xiàng)目,但總是因?yàn)橐恍┰虮粩R置。接下來有機(jī)會(huì)重構(gòu)之前的rn項(xiàng)目,借此機(jī)會(huì)正好可以引入ts,為了使后期的項(xiàng)目架構(gòu)更加完善,近期我會(huì)梳理rn的一些知識(shí)點(diǎn)和新特性。
首先來介紹下TypeScript
始于JavaScript,歸于JavaScript
強(qiáng)大的工具構(gòu)建 大型應(yīng)用程序
先進(jìn)的 JavaScript
具體看官網(wǎng)傳送門,畢竟今天的重點(diǎn)在如何使用
1.新建一個(gè)react native項(xiàng)目react-native init TSReactNativeDemo
項(xiàng)目結(jié)構(gòu)
├── App.js ├── __tests__ ├── android ├── app.json ├── index.js ├── ios ├── node_modules ├── package.json └── yarn.lock
然后測(cè)試下新建的項(xiàng)目是否能運(yùn)行
react-native run-android react-native run-ios2.集成TypeScript
由于React Native Packager是通過Babel編譯.js文件以及打包的,所以沒辦法直接使用.tsx。折中本思路就是,先用TypeScript的編譯器tsc將.ts或.tsx文件編譯成.js文件,再用React Native Packager編譯打包即可。
首先我們安裝TS依賴:
yarn add -D typescript
然后需要安裝types:
yarn add -D @types/react @types/react-native
然后需要配置tsconfig.json,可以用如下命令生成:
tsc --init --pretty --sourceMap --target es2015 --outDir ./lib --rootDir ./ --module commonjs --jsx react
生成的文件里面有具體每個(gè)參數(shù)的含義,也可以參考TS官網(wǎng)文檔。
3.編寫一個(gè)TS組件還是一樣的面孔,還是那個(gè)讓我們魂?duì)繅?mèng)繞的栗子—計(jì)數(shù)器(Counter.tsx)
import * as React from "react"; import { Button, StyleSheet, Text, View } from "react-native"; interface Props { name: string; count?: number; onInc?: () => void; onDec?: () => void; } export default ({ name, count = 1, onInc, onDec }: Props) => (); // styles const styles = StyleSheet.create({ root: { alignItems: "center", alignSelf: "center", }, buttons: { flexDirection: "row", minHeight: 70, alignItems: "stretch", alignSelf: "center", borderWidth: 5, }, button: { flex: 1, paddingVertical: 0, }, greeting: { color: "#999", fontWeight: "bold", }, }); Counter {name}: {count}
接下來就是利用ts編譯器編譯寫好的.tsx個(gè)人建議在package.json中配置一下
... "scripts": { "start": "node node_modules/react-native/local-cli/cli.js start", "tsx":"./node_modules/.bin/tsc", "test": "jest" }, ...
然后執(zhí)行
npm run tsx
由于ts默認(rèn)的tsconfig.json中設(shè)置了
"outDir": "./lib"
所以在項(xiàng)目根目錄/lib下會(huì)生成編譯后的.js文件如
lib └── src ├── Counter.js └── Counter.js.map4.引用編譯后的Counter.js
最后一步就是在入口js中引用編譯后的文件,然后打包測(cè)試即可。
總結(jié)整體看來,ts的引入讓我們前期多了幾步操作,但這些問題都可以在自動(dòng)化打包部署中用腳本幫我們完成,另外對(duì)于ts不熟悉,一些習(xí)慣了js弱類型的開發(fā)者來說這樣的寫法無疑就是沒事找事。我不反駁這種觀點(diǎn),舉幾個(gè)例子
interface Props { onInc?: () => void; } ...{})} /> ...
如果我這里沒有規(guī)定onInc為可為空且無返回值的fun,并且在onPress中沒有做undefind判斷,頁面在使用這個(gè)子組件的時(shí)候一旦傳入的值是undefind就會(huì)導(dǎo)致奔潰。如果這些功能一個(gè)人做還好,多人協(xié)作,這樣本可以避免的問題就會(huì)被無限放大。
ts的引入可以降低項(xiàng)目的維護(hù)成本,作為企業(yè)級(jí)的項(xiàng)目這是很有必要的
可能有人會(huì)拿ts和flow做比較,首先二者我都有使用過,總體的感覺ts更強(qiáng)大一點(diǎn),個(gè)人建議還是使用ts
文章可能有很多不足的地方,希望大家指正,同時(shí)也希望大家可以多多交流,分享出更多的技術(shù)方案,謝謝~~
技術(shù)交流群:581621024 關(guān)注小編 公眾號(hào):LearningTech 每日更新前端技術(shù)
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/96059.html
摘要:多端統(tǒng)一開發(fā)框架優(yōu)秀學(xué)習(xí)資源匯總官方資源項(xiàng)目倉庫官方文檔項(xiàng)目倉庫官方文檔微信小程序官方文檔百度智能小程序官方文檔支付寶小程序官方文檔字節(jié)跳動(dòng)小程序官方文檔文章教程不敢閱讀包源碼帶你揭秘背后的哲學(xué)從到構(gòu)建適配不同端微信小程序等的應(yīng)用小程序最 Awesome Taro 多端統(tǒng)一開發(fā)框架 Taro 優(yōu)秀學(xué)習(xí)資源匯總 showImg(https://segmentfault.com/img/r...
摘要:雅虎從很早就開始招聘和培養(yǎng)研究型人才,雅虎研究院就是在這個(gè)過程中應(yīng)運(yùn)而生的。今天我就來說一說雅虎研究院的歷史,以及過去十多年間取得的成就,聊一聊如何通過引進(jìn)高級(jí)人才,迅速構(gòu)建起一支世界級(jí)的研發(fā)團(tuán)隊(duì)。 showImg(https://segmentfault.com/img/remote/1460000013995512); 作者:王下邀月熊 編輯:徐川 前端每周清單專注大前端領(lǐng)域內(nèi)容,...
摘要:在,是當(dāng)之無愧的王者,贏得了與之間的戰(zhàn)爭(zhēng),攻陷了的城池。于月發(fā)布了版本,這一版本為了更好的表現(xiàn)加入了渲染方式。前端框架這個(gè)前端框架清單可能是年疲勞的元兇之一。的創(chuàng)建者,目前在工作為尋找構(gòu)建簡(jiǎn)單性和自主配置性之間的平衡做了很大的貢獻(xiàn)。 春節(jié)后的第一篇就從這個(gè)開始吧~本文已在前端早讀課公眾號(hào)上首發(fā) 原文鏈接 JavasScript社區(qū)在創(chuàng)新的道路上開足了馬力,曾經(jīng)流行過的也許一個(gè)月之后就過...
摘要:在年成為最大贏家,贏得了實(shí)現(xiàn)的風(fēng)暴之戰(zhàn)。和他的競(jìng)爭(zhēng)者位列第二沒有前端開發(fā)者可以忽視和它的生態(tài)系統(tǒng)。他的殺手級(jí)特性是探測(cè)功能,通過檢查任何用戶的功能,以直觀的方式讓開發(fā)人員檢查所有端點(diǎn)。 2016 JavaScript 后起之秀 本文轉(zhuǎn)載自:眾成翻譯譯者:zxhycxq鏈接:http://www.zcfy.cc/article/2410原文:https://risingstars2016...
摘要:它不僅從前端移動(dòng)到后端,我們也開始看到它用于機(jī)器學(xué)習(xí)和增強(qiáng)現(xiàn)實(shí),簡(jiǎn)稱。由于其高使用率,年的現(xiàn)狀調(diào)查將其稱為采用的安全技術(shù)。機(jī)器學(xué)習(xí)框架在年的開發(fā)者峰會(huì)上,宣布了他們的機(jī)器學(xué)習(xí)框架的實(shí)現(xiàn),稱為。更高級(jí)別的用于在之上構(gòu)建機(jī)器學(xué)習(xí)模型。 2019,開發(fā)者應(yīng)該學(xué)習(xí)的16個(gè)JavaScript框架 showImg(https://segmentfault.com/img/remote/14600...
閱讀 2109·2023-04-26 00:50
閱讀 2479·2021-10-13 09:39
閱讀 2200·2021-09-22 15:34
閱讀 1605·2021-09-04 16:41
閱讀 1336·2019-08-30 15:55
閱讀 2433·2019-08-30 15:53
閱讀 1707·2019-08-30 15:52
閱讀 748·2019-08-29 16:19