栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

我们可以在React Native应用程序中使用Node.js代码吗?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

我们可以在React Native应用程序中使用Node.js代码吗?

是的,您 可以 通过正确使用Big Rich的ReactNativify 使用为Node编写的包。但是要考虑一些事项:

1)我遵循在问题清单中找到的建议,并分为

transformer.js
两部分:

Transformers.js(在

/config
和中调用
rn-cli.config.js
):

const babelTransformer = require('./babel-transformer');module.exports.transform = function(src, filename, options) {    const extension = String(filename.slice(filename.lastIndexOf('.')));    let result;    try {    result = babelTransformer(src, filename);    } catch (e) {    throw new Error(e);    return;    }    return {    ast: result.ast,    pre: result.pre,    map: result.map,    filename    };};

babel-transformer.js(也在

/config
):

'use strict'const babel = require('babel-core');const babelRC = {    presets: ['react-native'],    plugins: [    // The following plugin will rewrite imports. Reimplementations of node    // libraries such as `assert`, `buffer`, etc. will be picked up    // automatically by the React Native packager.  All other built-in node    // libraries get rewritten to their browserify counterpart.    [require('babel-plugin-rewrite-require'), {        aliases: { constants: 'constants-browserify', crypto: 'react-native-crypto', dns: 'mock/dns', domain: 'domain-browser', fs: 'mock/empty', http: 'stream-http', https: 'https-browserify', net: 'mock/net', os: 'os-browserify/browser', path: 'path-browserify', pbkdf2: 'react-native-pbkdf2-shim', process: 'process/browser', querystring: 'querystring-es3', stream: 'stream-browserify', _stream_duplex: 'readable-stream/duplex', _stream_passthrough: 'readable-stream/passthrough', _stream_readable: 'readable-stream/readable', _stream_transform: 'readable-stream/transform', _stream_writable: 'readable-stream/writable', sys: 'util', timers: 'timers-browserify', tls: 'mock/tls', tty: 'tty-browserify', vm: 'vm-browserify', zlib: 'browserify-zlib'        },        throwForNonStringLiteral: true    }],    // Instead of the above you could also do the rewriting like this:    ["module-resolver", {      "alias": {        "mock": "./config/mock",        "sodium-universal": "libsodium"      }    }]    ]};module.exports = (src, filename) => {    const babelConfig = Object.assign({}, babelRC, {    filename,    sourceFileName: filename    });    const result = babel.transform(src, babelConfig);    return {    ast: result.ast,    pre: result.pre,    map: result.map,    filename    };}

2)如您在上面的代码中所见,我还演示了如何使用

babel-plugin-module-resolver

注意 ,我将使用该插件而不是ReactNative所使用的插件。它允许您引用本地文件,并用适当的引号书写允许使用非JS兼容名称,例如“
sodium-universal”

注意2

.babelrc
按此评论所述寻求解决方案(可能是最干净的):https
:
//github.com/philikon/ReactNativify/issues/4#issuecomment-312136794

3)我发现我仍然需要

.babelrc
在项目的根目录中使用a
才能使Jest测试正常工作。有关详细信息,请参见此问题:https
:
//github.com/philikon/ReactNativify/issues/8



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/403907.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号