我正在使用browserify和babel将es6发送到es5:
template <typename C, typename Tuple, int... Is>
auto project_impl(const C& c, const Tuple& indices,
std::integer_sequence<int, Is...>) {
return std::make_tuple(c[std::get<Is>(indices)]...);
}
template <typename C, typename Tuple>
auto project(const C& c, const Tuple& indices) {
return project_impl(c, indices,
std::make_integer_sequence<int, std::tuple_size<Tuple>::value>());
}
在我的employeeModule.js中:
concat: {
options: {
sourceMap: false
},
dist: {
src: ["Scripts/app/another.js", "Scripts/app/employee.js"],
dest: "Scripts/app/built.js"
}
},
browserify: {
dist: {
options: {
transform: [
["babelify", { "presets": ["es2015"] }]]
},
files: {
"Scripts/app/expParser.js": "Scripts/app/built.js"
}
}
}
在我的employee.js中:
export const n=10;
现在问题是当我在另一个文件中调用console.log(d)时,即使我没有执行&#34; import &#34;,another.js:< / p>
import {d} from "./employeeModule.js";
console.log(d) //10
我提到我正在连接:employee.js和another.js一起在浏览器中加载此文件时进行一次调用。这两个文件都是IIFE。 如何防止访问&#34; d&#34; another.js文件中的值?
编译后的代码是这样的:
console.log(d) //10
并且是所有功能的全球性。
答案 0 :(得分:0)
我确定您不需要concat
任务。
Browserify为您完成所有必要的concatenation和module isolation。你只需要写进口。
例如,您可以删除concat
任务,然后只在built.js
中留下这两行:
import './another.js';
import './employee.js';
在构建之后,您将发现expParser.js
执行这两个模块,其中每个模块的外部都看不到变量。没有任何手动将模块包装到IIFE中。
我想这很接近你的需求。
P.S。请不要忘记提及您下次使用grunt
。