亚游wwwag8com
你好,游客 登录 注册
背景:
阅读新闻

使用TypeScript开发React Native应用示例教程

[日期:2019-05-21] 来源:Linux社区  作者:frontEndJie [字体:亚游wwwag8com大 亚游wwwag8com中 ]

亚游wwwag8com,北京时间11月2日,第21届三星杯世界围棋大师赛半决赛三番棋比赛的决胜局,在韩国儒城三星研修院结束。中国棋手柯洁执白第188手中盘战胜老对手李世石,以2-1的总比分淘汰对手,取得对李世石10胜3负的骄人战绩。就此,中国棋手也提前包揽了本届三星杯的冠亚军。另一盘半决赛决胜局的较量,在中国棋手范蕴若和柁嘉熹之间进行。去年中国军团就曾在三星杯上包揽冠亚军,今年再度会师决赛,显示了中国棋手强大的实力。

  距离海南三亚1000多公里的美济礁隶属南沙,是我国南海最南端的重要渔业基地之一。目前,在科技人员的帮助下,越来越多的渔民通过开展深水网箱养殖在当地扎下根。然而,由于岛礁距离大陆十分遥远,日常生产、生活物资的保障依然是最主要的难题之一。司机酒后加大油门强行冲岗撞伤辅警 嫌疑人已抓获急救中心赵医生告诉北青报记者,自己和同事拿到手的望远镜并不是照片中的款式,而是另一款黑色博冠超越款双筒望远镜,不具备红外功能,某电商售价仅205元。

创建一个示例RN应用程序,从Expo的create-react-native-app(CRNA)开始,并将其配置为使用Typescript开发我们的RN代码。

1.使用CRNA创建React Native项目

$ yarn global add create-react-native-app

打开终端,并cd选择您的工作文件夹。运行以下命令以创建新的React Native项目:

create-react-native-app CRNAExpoTSExample

在此命令中,CRNA将为您构建一个非常基本但可立即运行的React Native应用程序。一旦应用程序创建,cd以创建应用程序的项目文件夹,并确保通过CRNA脚手架基本初始应用程序正在工作。

2.添加Typescript

安装依赖项

yarn add typescript tslint -D
yarn add @types/react @types/react-native @types/react-dom -D

我们还需要rimraf和concurrently清理ts-transpiled-to-js文件的输出文件夹并同时运行npm脚本

yarn add concurrently rimraf -D

配置

tsc --init

tsconfig.json

在代码编辑器中打开项目并更新tsconfig.json为以下内容:

{
    "compilerOptions": {
        "module":"es2015",
        "target": "es2015",
        "jsx": "react",
        "rootDir": "src",
        "outDir": "build",
        "allowSyntheticDefaultImports": true,
        "noImplicitAny": true,
        "sourceMap": true,
        "experimentalDecorators": true,
        "preserveConstEnums": true,
        "allowJs": true,
        "noUnusedLocals": true,
        "noUnusedParameters": true,
        "noImplicitReturns": true,
        "skipLibCheck": true,
        "moduleResolution":"Node"
    },
    "filesGlob": [
        "typings/index.d.ts",
        "src/**/*.ts",
        "src/**/*.tsx",
        "node_modules/typescript/lib/lib.es6.d.ts"
    ],
    "types": [
      "react",
      "react-dom",
      "react-native"
    ],
    "exclude":[
        "build", 
        "node_modules",
        "jest.config.js",
        "App.js"
        
    ],
    "compileOnSave": false
}

我们想将所有的Typescript应用程序代码文件存储在该src文件夹下的文件夹/子文件夹中。使用“rootDir”: “src ,Typescript编译器将查找文件夹及其子文件夹中的所有  文件.ts或  .tsx文件src。

“outDir”: “build”表示Typescript将在build文件夹下输出已转换的亚游wwwag8comJavascript文件。

添加tslint.json

tslint.json在项目文件夹下添加文件,其内容如下:

{
    "rules": {
      "member-access": false,
      "member-ordering": [
          true,
          "public-before-private",
          "static-before-instance",
          "variables-before-functions"
      ],
      "no-any": false,
      "no-inferrable-types": [false],
      "no-internal-module": true,
      "no-var-requires": true,
      "typedef": [false],
      "typedef-whitespace": [
        true, {
          "call-signature": "nospace",
          "index-signature": "nospace",
          "parameter": "nospace",
          "property-declaration": "nospace",
          "variable-declaration": "nospace"
        }, {
          "call-signature": "space",
          "index-signature": "space",
          "parameter": "space",
          "property-declaration": "space",
          "variable-declaration": "space"
        }
      ],
      "ban": false,
      "curly": false,
      "forin": true,
      "label-position": true,
      "no-arg": true,
      "no-bitwise": true,
      "no-conditional-assignment": true,
      "no-console": [
        true,
        "debug",
        "info",
        "time",
        "timeEnd",
        "trace"
      ],
      "no-construct": true,
      "no-debugger": true,
      "no-duplicate-variable": true,
      "no-empty": true,
      "no-eval": true,
      "no-null-keyword": true,
      "no-shadowed-variable": true,
      "no-string-literal": true,
      "no-switch-case-fall-through": true,
      "no-unused-expression": true,
      "no-use-before-declare": true,
      "no-var-keyword": true,
      "radix": true,
      "switch-default": true,
      "triple-equals": [
        true,
        "allow-undefined-check"
      ],
      "eofline": false,
      "indent": [
        true,
        "spaces"
      ],
      "max-line-length": [
        true,
        150
      ],
      "no-require-imports": false,
      "no-trailing-whitespace": true,
      "object-literal-sort-keys": false,
      "trailing-comma": [
        true, {
          "multiline":  "never",
          "singleline": "never"
        }
      ],
      "align": [true],
      "class-name": true,
      "comment-format": [
        true,
        "check-space"
      ],
      "interface-name": [false],
      "jsdoc-format": true,
      "no-consecutive-blank-lines": [true],
      "no-parameter-properties": false,
      "one-line": [
        true,
        "check-open-brace",
        "check-catch",
        "check-else",
        "check-finally",
        "check-whitespace"
      ],
      "quotemark": [
        true,
        "single",
        "avoid-escape"
      ],
      "semicolon": [
        true,
        "always",
        "ignore-interfaces"
      ],
      "variable-name": [
        true,
        "allow-leading-underscore",
        "ban-keywords"
      ],
      "whitespace": [
        true,
        "check-branch",
        "check-decl",
        "check-operator",
        "check-separator",
        "check-type"
      ]
    }
}

创建src和build 文件夹

由于我们配置src和build为rootDir和outputDir中tsconfig.json,创建我们项目的根文件夹下这些文件夹。

当我们create-react-native-app CRNAExpoTSExample使用CRNA命令()创建项目时,它在我们的项目文件夹下添加了一个App.jsApp.test.js。这些文件移动到SRC我们创建的文件夹,然后重命名App.js,并App.test.js以App.tsx和App.test.tsx分别。

此时,您的项目文件夹和文件应如下所示:

                                                                                      使用TypeScript开发React Native应用示例教程

在package.json中添加一些脚本

当我们使用CRNA命令创建上面的项目时,package.json它在scaffolded项目文件夹中创建的文件包含以下脚本:

... 
“scripts”:{ 
   “start”:“react-native-scripts start”,
   “eject”:“react-native-scripts弹出”,
   “亚游wwwag8comAndroid”:“react-native-scripts android”,
   “ios” :“react-native-scripts ios”,
   “test”:“node node_modules / jest / bin / jest.js” 
} 
...

现在,我们将添加更多脚本来运行我们的任务来编译Typescript,创建构建并启动我们的应用程序:

"lint": "tslint src/**/*.ts",
"tsc": "tsc",
"clean": "rimraf build",
"build": "yarn run clean && yarn run tsc --",
"watch": "yarn run build -- -w",
"watchAndRunAndroid": "concurrently \"yarn run watch\" \"yarn run android\"",
"buildRunAndroid": "yarn run build && yarn run watchAndRunAndroid ",
"watchAndRunIOS": "concurrently \"yarn run watch\" \"yarn run ios\"",
"buildRunIOS": "yarn run build && yarn run watchAndRunIOS ",
"watchAndStart": "concurrently \"yarn run watch\" \"yarn run start\"",
"buildAndStart": "yarn run build && yarn run watchAndStart "

在项目的根文件夹下添加App.js

请注意,在package.json最初由CRNA创建的文件中,app 的“main”入口点设置为:

“main”:“./ node_modules/react-native-scripts/build/bin/crna-entry.js”

意味着我们的应用程序从此crna-entry.js 文件开始。打开这个文件,你会发现它引用了我们的App.js文件:

<span style="color:rgba(0, 0, 0, 0.84)">var _App = require('../../../../ App');</span>

这意味着它期望app模块位于App.js我们项目的根文件夹下的文件中。但是,我们将原始App.js文件移动到该src文件夹。此外,Typescript编译器将在该build文件夹下输出已转换的ts-to-js文件。

因此,为了让CRNA使用我们更改的文件夹结构和我们的Typescript配置,让我们App.js在项目文件夹下添加一个文件,该文件将只导出我们的App组件src/App.tsx,Typescript编译器将输出到该build文件夹。

App.js在项目的根文件夹下创建文件:

import App from './build/App';
export default App;

3.运行我们的应用程序

我们现在都设置为运行我们的Typescript应用程序。运行命令:

yarn run buildAndStart

注:好了,到此,你的项目应该已经运行起来了,有任何疑问,欢迎留言。

Linux公社的RSS地址亚游wwwag8com/wwwd35clinuxidcd35ccom/rssFeed.aspx

本文永久更新链接地址亚游wwwag8com/wwwd35clinuxidcd35ccom/Linux/2019-05/158790.htm

linux
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款
美国铝产业到底咋了 为何紧紧“咬住”中国不放? 云南私挖走私冻肉调查:村民挖一晚能挣上千元 电信联合11家厂商推17款AI手机 首战詹皇终结者玩出五大囧 自己出糗还酿车祸 法国将立法定偷拍为犯罪 最高判两年罚3万欧元 软银计划与印度初创公司在日本启动支付业务 全国政协委员:网游已成毒害青少年新“鸦片” 索萨:亚冠回来只有一天训练 人和会有强烈斗志 李霄鹏:鲁能实力不在前5行列 会对小摩托专门布防 中部战区副参谋长:军改新格局战区要勇担主战之责 鄂媒:一场期待太久的大胜 卓尔本土球员群星闪耀 皇马欧冠遭遇一大魔咒!足球篮球无法同一年夺冠
2018城围联隆重开幕 32队齐聚围棋NBA火爆开启 东盟论坛部长会召开在即 美日韩密集开展对朝外交 杜特尔特一声令下,兰博基尼成了铁饼... 欧洲央行召开货币政策会议 零利率及加息预期不变 叙东古塔区现14起窒息案例 医生怀疑涉及化武攻击 美专家:中国歼20有一系列优点 但总体落后于俄苏57 库德洛预判经济多次遭“打脸 ”白宫之路能走多远? 贴心!上海环球马术冠军赛赛场升级打造完美时光 国元期货简一交易05.18交易策略 百度医疗广告竞价排名卷土重来 疾病搜索花钱可置顶 凯撒月底回归将带队训练 上赛季已完成任务 女佩小将邵雅琦挑落世界第一 曾假崴脚逃避训练
雷政富第三次提请减刑 曾遭同级官员当庭举报漏罪 嫦娥四号今年探月分两步走 我国未来或建月球基地 研究发现:被动吸二手烟影响部分女性怀孕 北大学霸创办足球学校 只招985和211毕业生执教 中国外交部回应美国签署对台法案:已提出严正交涉 观点:萨拉赫该留在利物浦 去皇马巴萨很难上场 女子悬赏2万寻被盗摩托 窃贼同伙想领赏金打电话 足协探索人才培养新模式 足球田径跨项组合选材 清华台生:请民进党还台湾一个安静繁荣的社会 台专家脑补“大陆武统” 还教台民众“躲轰炸” 超级碗夺冠得谢这NBA全明星!他是老鹰的吉祥物 招银国际:恒指料随美股急挫 考验32000点 美政府预算案期限迫近 两党斗争达成协议机会小 亚游wwwag8com