码迷,mamicode.com
首页 > Web开发 > 详细

The story behind _references.js 简译一下

时间:2015-08-04 17:31:14      阅读:224      评论:0      收藏:0      [点我收藏+]

标签:

_references.js背后的故事

_references.js是在VS的WEB项目中,提供智能提示的关键技术。

在VS2010发布之后,作者还是ASP.NET小组成员时,小组想把js编辑器的功能迁移到一个新的“客户端平台小组”。这个小组将要为VS2012创建一个全新的,现代的js编辑器,另一层目的就是为即将到来的Win8 App提供HTML/JS开发支持。而原来的js编辑器从vs中剥离,但它却在webMatrix中重生,包括之后的开发及更新。

既然要开发新的编辑器,正好是重新设计我们已经使用过的许多功能的机会。关键之一就是智能提示

有三个思路来智能提示:

1、All.js 。项目中所有的js自动加载到智能提示中

2、Only.js。只有页面中包含的js,才智能提示

3、让用户指定要智能提示的js文件。

第1种,肯定会带来负面影响。未引用的js也提示,那么运行时会报错;会带来性能问题;无法确定加载的顺序;与此同时,bundling, minification and dynamically loaded JavaScript这几种技术,都让ide无所适从。

最终,让用户手动添加引用文件,能消除性能 因素,防止解析html文件中的script标签。

总之每种方法都有赞成和反对的声音。

显示抑或隐式地引用呢?

既然决定新编辑器要使用第2、3两个方法。那么它只要解析页面上的<script>以及加载用户显示声明的三斜杠引用 。/// <reference path="../app/respond.js" />

把js文件从解决方案管理器拖动到页面上时,文档顶部自动插入一个三斜杠的引用。通过这种引用,ide就可能进行智能提示。

_references.js是全局的引用

通过上面显示的引用,用户不得不每个js文件都添加上三斜杠的引用,比如jquery,可能要在所有的文件中引用。这不爽,为了最大化不为降低用户的负担,必须要一个全局的引用缓存。

这于是约定 /scripts/_references.js会自动添加为全局智能提示。

改变引用文件的名称

一些人不喜欢用scripts文件夹,或不喜欢_references的名字。假设一些人要用/js/globals.js这样的名字

vs提供了相应的方法,去选项-》Text Editor->JavaScript->IntelliSense->References中,找到Reference Group中,选择相应的下拉项,会找到引用的文件(我现在安装的vs2015明显没有列出_references.js)

自动实现一切

以上这些功能都随着vs2012发布了,但到了vs2013,我们决定再次改进工作流程。

用户必须手动维护这个引用文件,当用户添加删除或改名后,很容易忘记还要去_references.js更正一下.更好的方法是加载所有的js文件,因为知道这有性能问题以及文件加载顺序的问题,所以必须让用户可以禁止此功能。

连vs都没有提供 默认的项目setting文件,我们不想额外地增加一个setting文件。于是我们引入了一个新的三斜杠的名称

/// <autosync enabled="true" />







The story behind _references.js 简译一下

标签:

原文地址:http://my.oschina.net/u/1540190/blog/487565

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!