Ember CLI 1.13项目是否需导入jQuery?能否禁用默认jQuery?
Ember CLI 1.13.x中jQuery的集成问题解答
我来帮你理清这个旧版本Ember里jQuery的情况哈:
1. 为什么移除import $ from 'jquery'后代码还能正常运行?
在Ember CLI 1.13.x这个版本里,jQuery是默认全局自动注入的,完全不需要手动导入就能使用:
- 它会自动把
$挂载到全局的window对象上,所以你直接写$()就能调用jQuery; - Ember的核心类(比如组件、控制器、路由)还会自动绑定
this.$()方法,让你在类内部也能直接访问当前元素的jQuery实例。
你之前加的那些import语句其实都是冗余的,移除后自然不会影响功能。
2. 这个版本是否必须导入jQuery?
答案是完全不需要。刚才也说了,这个版本的Ember默认就把jQuery作为核心依赖集成了,全局可用,手动导入只是多此一举。
3. 能不能禁用默认集成的jQuery?
可以,但非常不建议,而且配置方式和新版本Ember不一样:
- 1.13.x还没有
optional-features.json这个配置文件,要禁用的话需要修改ember-cli-build.js,通过vendorFiles把jQuery排除:
module.exports = function(defaults) { var app = new EmberApp(defaults, { vendorFiles: { 'jquery.js': null } }); // 其他项目配置... return app.toTree(); };
- 但要注意:这个版本的Ember核心功能严重依赖jQuery(比如DOM操作、事件绑定、视图渲染),禁用后大概率会导致大量内置功能失效,比如组件的
this.$()无法使用、路由里的DOM操作报错,甚至页面渲染异常。除非你已经完全重写了所有依赖jQuery的代码,否则不要尝试禁用。
内容的提问来源于stack exchange,提问作者escapeVelocity
相关产品推荐
相关产品推荐

