hgo*_*ebl 5 javascript node.js browserify typescript webpack
我有一个在Node.js和浏览器中使用的内部库.它有许多文件,与Grunt任务和不同的序言连接,一个用于浏览器,一个用于Node:
浏览器:
// dependent 3rd-party libs like Mustache are already global
window.myLib = { /*just a namespace object filled with stuff later*/ }
// then comes the plain javascript which just adds elements to myLib.
// This part is identical to that used in Node
// example:
myLib.renderPartDetail = function (...) {...};
Run Code Online (Sandbox Code Playgroud)
节点:
var Mustache = require('mustache');
var myLib = {};
module.exports = myLib;
// then comes the plain javascript which just adds elements to myLib.
// This part is identical to that used in Browser
Run Code Online (Sandbox Code Playgroud)
这导致2个不同的单输出js文件,一个用于浏览器,一个用于Node.
我想要什么
让我困惑的是什么
我在TypeScript中找到了两种不同的模块处理:
import {a, b} from './x'
Run Code Online (Sandbox Code Playgroud)
和
import c = require('./y')
Run Code Online (Sandbox Code Playgroud)
我从节点习惯了后者,但第一个看起来像ES6(可能是未来).
目前我使用tsc --module commonjs
但这只是输出格式,对吧?还有,--module system
但我找不到这个选项的文档,当我使用它时,编译器抱怨export = ...
是不允许的.
尚未打得四处browserify
,tsify
,watchify
,jspm
,SystemJS,webpack
-它太相似,太多了,但我觉得一个或几个这些工具可以为我做的工作.
而当我require(<a node module living in node_modules>)
,tsc找不到模块:"TS2307:找不到外部模块'时刻'".
具体问题
对不起,这篇文章太复杂了.如有必要,请告诉我从哪里开始或者最重要的事情是改变或开始.
我应该在代码中使用哪种模块语法才能最好地与 Node 和浏览器配合使用?
如果您的目标是es5
,那么两种语法都会编译为实际上相同的东西。使用其中之一,并随意混合搭配。
哪个工具链可以解决我的需求?是否有示例项目或样板文件可供我复制
我使用(并推荐)webpack。您可以按原样使用 commonjs / nodejs,然后 webpack 可以为前端创建捆绑包。有关示例,请参阅https://github.com/basarat/tsb/tree/master
目前支持哪些 TypeScript 和 Node 版本?我将 1.4 嵌入到 IntelliJ 中,当将 1.6.2 引用为外部时,我收到非常深刻的神秘错误消息,例如“TypeError:host.fileExists 不是函数”(没有找到任何对此有帮助的信息)。也许使用 Node v4.1.1 不是最佳选择?
使用最新的 TypeScript(TypeStrong 的各种工具,例如atom-typescript/grunt-ts/ts-loader 支持)。您收到的错误是网络风暴错误,应该向他们报告。(我使用原子打字稿)。
归档时间: |
|
查看次数: |
1478 次 |
最近记录: |