Node / Javascript根据目标平台导入不同的模块?

时间:2017-06-04 10:56:17

标签: javascript node.js typescript browserify

我想知道有哪些方法可以指定应用程序根据目标平台导入哪些模块。我想在浏览器和nodejs的typescript中导入相同接口的不同实现。

我们有像

这样的东西
#ifdef windows
#include "windowsimplementation.h"
#endif

在c ++中

如何使用typescript节点和browserify实现类似的功能?

2 个答案:

答案 0 :(得分:1)

  

我的应用程序应该基于目标平台导入哪些模块

使用development: adapter: postgresql encoding: utf8 database: app_dev username: dev_user password: dev_pass host: localhost port: 5432 中的browser媒体资源。

更多

建议将package.json实现创建为默认值,并将node指向从中生成的定义。有关类型的更多信息:https://egghead.io/lessons/typescript-create-high-quality-npm-packages-using-typescript

答案 1 :(得分:0)

在nodejs中,您可以按照以下方式执行此操作:How do I determine the current operating system with Node.js

// in Nodejs
// possible values for process.platform 'darwin', 'freebsd', 'linux', 'sunos' or 'win32'
var moduleString = {
  'win32': 'windows-node-module',
  'darwin': 'darwin-node-module',
  // ... and so on
}

var module = require(moduleString[process.platform]);

在浏览器中,您可以通过navigator对象检查操作系统:

// in Browser
// possible values windows, mac, linux
var moduleString = {
  'win': 'windows-browser-module',
  'mac': 'mac-browser-module',
  'linux': 'linux-browser-module',
}

function getOS(){
  return navigator.appVersion.indexOf("Win") != -1 ? 'win' : 
    (navigator.appVersion.indexOf("Mac") != -1) ? 'mac' : 'linux'; 
}

var module = require(moduleString[getOS()]);