据我所知,requirejs和browserify可以载入我的文件取决于其当前上下文,并且它是惊人的。我真的很喜欢使用的剃刀引擎使用@section sections
语法。只是不知道是否有落实到一个打字稿/ angularjs应用这种方式。
例如
的index.html
@renderSection scripts;
// which could turn into something like
<script data-render="scripts"></scripts>
// the app.run() could declare all the scripts that will be needed on every
// page view
view.html
<script ng-section-repeat="injected in injection"></script>
// the ng-section-repeat is basically taking all the items in the
// typescript constructor and then finding out which ones are needed for
// that view.
我喜欢这个主意,视图注入应用程序文件的依赖性,没有一个配置文件和所有可以额外附带的装载机。
我只是想简单地定义需要什么样的文件,在实际的视图,并让他们加载,具有角的依赖注入处理的依赖本身。
如果您正在处理所有的依赖性与$inject
那么,据我所知,依赖在技术上已经在控制器的设置,所有的人会需要的,是因为它是所谓加载此。这甚至可以消除对@section scripts
需要完全
更新:我做了什么,以某种复制模块加载器是只使用gulp-concat和我gulp.config.js
定义文件顺序,然后运行gulp-src
。这之前它传递给$.concat
让我有在吞气蒸汽中的文件,在为了依赖。然而,他们被装载在第一负载。随着gulp-uglify文件是微小(其现在566KB在69ms装载16个外部库。为了它放入角度来看,它需要209ms加载一个谷歌字体)。
我不知道,也许我不理解browserify正确,但老实说,我很难看到它的需要,它似乎是这么简单的东西非常令人费解
它使用外部组件和注射器做你问什么是可能的:
我只是想简单地定义都需要在实际的观点是什么文件
import {UserFactory} from 'models/userFactory';
import {UserValidator} from 'models/userValidator';
import {Inject} from 'angular2/di';
并让他们加载,具有角的依赖注入处理的依赖本身。
注:我的示例使用的角度2.x的,因为我不太熟悉的角度1.x的我敢肯定,你可以做真正类似的东西...
class SomeComponent {
userName: string;
userRating: number;
rating: number;
constructor(
@Inject(UserFactory) UserFactory
@Inject(UserValidator) UserValidator
)
{
this.UserFactory = UserFactory;
this.UserValidator = UserValidator;
}
}
然后你可以使用Browserify创建可以在Web浏览器中执行的bundle.js
文件。