我正在使用Ember Cli编写一个Ember.js应用程序,我希望包含一个非bower依赖项 - 基本上是我vendor文件夹中的依赖项.
这样做的说明告诉我将以下行添加到我的ember-cli-build.js文件中:
app.import('vendor/dependency-to-include.js');
Run Code Online (Sandbox Code Playgroud)
对于正常的ES5风格的依赖项,这可以正常工作,但是如果我想添加用ES6编写的依赖项呢?
现在它只是将它传递给浏览器,不会产生如下错误:
Uncaught SyntaxError: Unexpected reserved word
Run Code Online (Sandbox Code Playgroud)
因为我的ES6风格的依赖项使用以下语法:
import Util from './util
Run Code Online (Sandbox Code Playgroud)
我猜我需要告诉ember-cli-build在将它传递给浏览器之前将其转换为特定的依赖关系,但我该如何去做呢?
谢谢
es6用babel CLI 编译一个简单的文件鉴于以下细节:出了什么问题?
$ node --version
v5.0.0
$ npm --version
3.3.6
$ npm init
$ npm install --save-dev babel-cli
$ echo -e 'import url from "url"\nconsole.log(`2+2=${2+2}`)' > script.js
$ ./node_modules/.bin/babel script.js
import url from "url";
console.log(`2+2=${ 2 + 2 }`);
Run Code Online (Sandbox Code Playgroud)
换句话说:我放入ES6然后我拿出ES6(尽管间距略有不同,并添加了分号).我期待看到转换为需求的导入,并看到我的后退滴答消失.
那就是:我想要ES5了.
我的目标是假装通过babel获得一些requirejs代码。我发现,如果我if (typeof define !== "function") { var define = require("amdefine")(module); }在nodejs中运行时在每个文件的顶部添加以下内容,则似乎可以解决问题。
这是我写的一些代码,我认为它们会起作用或几乎起作用:
function injectDefine(babel) {
var header = 'if (typeof define !== "function") { var define = require("amdefine")(module); }';
return new babel.Plugin('amdefine', {
visitor: {
Program: {
enter: function(path, file) {
path.unshiftContainer(
'body',
babel.types.expressionStatement(
babel.types.stringLiteral(header)
)
);
},
},
},
});
}
require('babel-core/register')({
stage: 0,
plugins: [{transformer: injectDefine}],
});
require('../components/button');
Run Code Online (Sandbox Code Playgroud)
该components/button文件只是我尝试测试是否可以加载某些文件。
其他说明:我正在使用babel 5,现在无法升级。我现在也不能.babelrc很轻松地使用它。
首先,我为长篇大论道歉.我一直在问一些关于haxe及其作为解决我所面临问题的工具的适用性的问题.我对haxe的知识非常有限,但我所知道的是我在haxe项目中的理想角色并不是haxe的正常使用.所以我想避免的是浪费时间我没有学习这种语言(尽管它看起来非常有趣和强大)只是发现它不适合目的.所以我希望得到一些关于它是否适合目的的经验丰富的兽医.我真的希望它是.
这是我想要实现的目标:
我在游戏行业工作,我需要用C++和JS创建游戏.用于嵌入式系统的C++和用于在线和移动的JS.我在C++和JS方面都很有经验.
我开发的游戏我只想写一次.现在我可以使用类似emscripten的东西从C++转到JS,但这会导致编译的JS代码无法轻松地使用chrome dev工具进行调试.我已经收敛了,我将使用编译的JS遇到边缘案例错误,我不能轻易地回到原始的C++.此外,游戏的某些平台需要公平的实验室来查看源代码,这对编译的JS来说是一个问题.
我真正需要的是源代码编译器,它生成本机和人类可读的c ++和JS代码,然后我可以使用它并在必要时以其原生形式进行修改,因此haxe.我查看了haxe为C++和JS生成的代码.JS看起来非常容易理解和使用.C++并不是那么多,但仍然可以接受.我甚至可以阻止haxe编译和链接我不需要的C++.我只想要源代码.
到现在为止还挺好.
现在我有一个使用oxygine 2d引擎的c ++游戏框架.它能够显示精灵等,以及我为消息总线和有限状态机创建的框架(也可以加载更多有用的类).我在JS中也有类似的框架,它使用Pixijs作为其2D引擎,并且有自己的消息总线等,就像C++引擎一样.
现在我想要做的就是在haxe中编写模块,当我向C++和JS转换时,代码可以作为框架的一部分包含在内并与其受尊重的语言引擎一起工作.我在haxe中创建的每个对象都将被非常封装,只需要订阅消息总线,处理消息并发回消息.它可能还需要知道如何使用其引擎状态机.因此,我不知道这是否可能与haxe一起使用,因为消息总线(以及其他对象)将不会以haxe编写,而是在将其转换并在其本机项目中构建之后将提供给模块.也许我可以编写自己的haxe库,它知道我的两个游戏引擎的语法,并且可以根据其目标语言进行转换?不确定这是可能的.
感谢您花时间阅读,以及您可以提供的任何建议.
我正在使用一个使用es6和es7代码的Aurelia应用程序,我试图使用babel来转换代码.我在packages.json文件中有以下内容
"scripts": {
"babel": "babel --stage 1 -d AureliaWeb/ ../Test/Aurelia/ --extends babelrc",
Run Code Online (Sandbox Code Playgroud)
我安装了以下软件包:
"devDependencies": {
"babel-core": "^6.10.4",
"babel-plugin-syntax-decorators": "^6.8.0",
"babel-plugin-syntax-flow": "^6.8.0",
"babel-plugin-transform-es2015-modules-amd": "^6.8.0",
"babel-plugin-transform-es2015-modules-commonjs": "^6.10.3",
"babel-plugin-transform-es2015-modules-systemjs": "^6.9.0",
"babel-plugin-transform-flow-strip-types": "^6.8.0",
"babel-preset-es2015": "^6.9.0",
"babel-preset-es2015-loose": "^7.0.0",
"babel-preset-react": "^6.11.1",
"babel-preset-stage-0": "^6.5.0",
"babel-preset-stage-1": "^6.5.0",
"babel-preset-stage-2": "^6.11.0",
"babel-preset-stage-3": "^6.11.0",
"babel-register": "^6.9.0",
"chai": "^3.5.0"
},
"dependencies": {
"babel-plugin-transform-class-properties": "^6.10.2",
"babel-plugin-transform-decorators-legacy": "^1.3.4",
"babel-preset-es2015-loose": "^7.0.0",
"core-js": "^2.4.0",
"lodash": "^4.13.1"
}
Run Code Online (Sandbox Code Playgroud)
我试图转换es7代码看起来像:
import {inject, noView} from 'aurelia-framework';
import {HttpClient} from 'aurelia-http-client';
@noView() <-- THIS IS CAUSING THE ERROR!!
@inject(HttpClient)
export …Run Code Online (Sandbox Code Playgroud) 什么应该是更好的路径转换scikit模型(例如,一个RandomForestClassifier拟合的结果)在一个C++中,以获得.so从其他生态系统调用的最快?
如您所见,我想将以下代码从ES6转换为ES5,并用作预设“ es2015”:
let myString = "Whatever";
let myStringArray = Array.from (myString);
console.log (myStringArray);
Run Code Online (Sandbox Code Playgroud)
如您所知,ES5中没有“ Array.from”方法,但转码后的代码仍包含Array.from。我做错什么了?
我正在尝试让Typescript在编译时排除某些文件。但是,似乎并不想排除它们。
这是我的tsconfig.json
{
"ref": "master",
"path": "typings",
"compilerOptions": {
"module": "amd",
"target": "es5",
"declaration": true,
"sourceMap": true,
"outDir": "build/src"
},
"exclude": [
"node_modules",
"typings/global",
"typings/index.d.ts",
"./src/subClassA.ts"
],
"files": [
"./src/entry.ts"
]
}
Run Code Online (Sandbox Code Playgroud)
它似乎排除了node_modules和类型。但是,编译后的代码仍包含subClassA。
我本来希望编译后的代码没有来自subClassA的任何代码,但是确实如此。
来自http://node.green/ NodeJS版本8.9.4支持99%的ES2015功能.这是否意味着我根本不需要巴贝尔?
以下是我正在努力实现的更多细节:
我听说服务器端的转换代码会降低开发速度.我不确定它对性能有什么影响.
所以这是我的问题:
我希望这更清楚.
是否有任何工具可以将wasm模块编译为本地可执行文件(例如,ELF或.exe文件)?类似脚本,但相反。失败了,还有其他方法可以在浏览器之外运行webassembly吗?
transpiler ×10
javascript ×4
babeljs ×3
ecmascript-6 ×3
babel ×2
node.js ×2
aurelia ×1
ecmascript-7 ×1
ember-cli ×1
ember.js ×1
haxe ×1
scikit-learn ×1
tsconfig ×1
typescript ×1
webassembly ×1