前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >The story behind _references.js 简译一下

The story behind _references.js 简译一下

作者头像
申君健
发布2018-09-21 10:02:57
6890
发布2018-09-21 10:02:57
举报
文章被收录于专栏:前端侠2.0前端侠2.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" />

同时IDE中,在_references.js文件上右键,会有自动同步和立即更新同步的功能。

自动同步为true时,ide会把你新添加、改名等都同步引用一下,并潜在会有引入顺序问题。

我个人认为不如手动的选择引入文件。

如果项目上没有这个文件,你要安装Web Essentials 2013,然后在/scripts上右键可以方便添加上这个文件。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2015/08/04 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档