React Native 意识流
注:本文暂无逻辑
移动端App分类
Web(正在用的):
- 优:开发效率高,成本低,纯前端就能搞定,跨平台
- 劣:基于Web Dom渲染,运行效率底,用户体验不佳, 本地接口局限
Native:
优:用户体验佳,充分使用本地接口
劣:开发效率低(需编译),成本高,纯前端就能搞定
Hybrid
优:js作为native, webview的桥梁,各尽其职
劣:前端与端上开发人员耦合严重,成本高,开发效率低
基础
文档
工具
以mac开发Android为例
使用中
React Native
将babel内置,无需关心语法兼容问题,随意使用es6/7
采用flexbox布局
App相当于SPA, Navigator控制路由
iNjnu App
服务端:node + json web tokens- 真机运行截图
利用git,部署技巧
每次在本机修改完后端代码,push到github后,如何快速部署?(无需登录服务器)
后端入口(nodejs
)var cp = require('child_process') var p = require('path') var fs = require('fs') fs.watch(__dirname, (type, filename) => { // 监控js文件修改,修改后重启node服务 if(!filename.endsWith(".js")) { return; } serverProcess.kill('SIGINT') serverProcess = runServer() }) var serverProcess = runServer() function runServer() { // index.js 是真正的服务端代码入口 return cp.fork('./index.js', process.argv, {stdio: [0, 1, 2, 'ipc']}) }
index.js
中有下面片段代码app.all('/pull', (req, res) => { res.writeHead(200, { 'Content-Type': 'text/event-stream', 'Cache-Control': 'no-cache', 'Connection': 'keep-alive' }); var ls = require('child_process').spawn('git', ['pull', 'origin', 'master']) ls.stdout.on('data', (data) => { data = data.toString() console.log(data) res.write(`${data}`); }); ls.stderr.on('data', (data) => { data = data.toString() console.log(data) res.write(`${data}`); }); ls.on('close', (code) => { console.log(`child process exited with code ${code}`) res.end(`child process exited with code ${code}`); }); })
push.sh
脚本#!/usr/bin/env bash msg="from bash" if [ -n "$1" ]; then msg=$1 fi git add . git commit -m "$msg" git push origin master # 服务器执行 `git pull origin master` # 从而更新js代码,继而重启服务器 curl http://202.119.104.195/pull
总结
传统的react native
使得前端开发高性能移动端App成为可能。 但距离自由地开发App(需要掌握原生App开发)还有很远,目前本人只停留在jscoach中寻找组件进行开发。 而且!react native
的代码检错与报错不太友好。