You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ember.js浏览器中首个执行的应用JS文件是什么?(Ember 2.13)

关于Ember.js 2.13应用初始化相关的问题解答

嘿,针对你提到的几个问题,结合Ember 2.13的特性,我给你梳理清楚:

1. 浏览器环境下首个执行的应用级JS文件

在Ember 2.13的传统目录结构里,浏览器加载后第一个执行的应用专属JS文件是app/app.js。这个文件是整个应用的入口点,负责初始化Ember应用实例,而且它完全运行在浏览器环境中,直接访问localStorage毫无问题,完全符合你的需求(不像config/env.js是在构建阶段执行的,没法访问浏览器API)。

你打开app/app.js通常会看到类似这样的代码:

import Ember from 'ember';
import Resolver from './resolver';
import loadInitializers from 'ember-load-initializers';
import config from './config/environment';

const App = Ember.Application.extend({
  modulePrefix: config.modulePrefix,
  podModulePrefix: config.podModulePrefix,
  Resolver
});

loadInitializers(App, config.modulePrefix);

export default App;

你可以直接在这里添加localStorage的操作逻辑,比如在定义App之后、导出之前,读取存储的配置并修改应用的相关设置,非常适合你的场景。

2. Module Unification结构的差异

如果你的应用开启了Module Unification(不过要注意,Ember 2.13里MU还属于实验性功能,默认是关闭的),那应用入口会变成src/main.js,替代了传统的app/app.js。MU重构了目录结构,把核心应用代码都放到src/目录下,main.js作为入口负责初始化应用,同样可以访问浏览器的localStorage,逻辑和传统结构的入口文件类似。

3. Ember 2.13里早期初始化代码的常用存放位置

除了app/app.js,开发者还经常用**初始化器(Initializers)**来存放启动阶段的代码,位置在app/initializers/目录下。初始化器会在应用启动过程中自动执行,适合做全局配置、服务注入或者基于localStorage的设置修改。

举个例子,你可以创建app/initializers/local-storage-config.js:

export function initialize(application) {
  // 这里可以自由访问localStorage,修改应用配置
  const storedConfig = localStorage.getItem('app-custom-config');
  if (storedConfig) {
    // 把存储的配置注册成应用内可用的服务/配置
    application.register('config:custom', JSON.parse(storedConfig), { instantiate: false });
    application.inject('route', 'customConfig', 'config:custom');
  }
}

export default {
  name: 'local-storage-config',
  initialize
};

不过要注意,初始化器是在应用实例创建之后才会执行的,如果你需要在实例创建之前就执行代码,那app/app.js还是最优先的选择。


内容的提问来源于stack exchange,提问作者Devin Rhode

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:16:47