请记住Web Essentials是开源的,所以我可以通过读代码来了解这些是怎么回事。因为不用深究,我看了监督模式并且发现它正在用MEF。
[Export(typeof(BrowserLinkExtensionFactory))]
[BrowserLinkFactoryName("InspectMode")] // Not needed in final version of VS2013
public class InspectModeFactory : BrowserLinkExtensionFactory
{
...
}
[BrowserLinkFactoryName("InspectMode")] // Not needed in final version of VS2013
public class InspectModeFactory : BrowserLinkExtensionFactory
{
...
}
这是行为的列表:
public IEnumerable Actions
{
get
{
yield return new BrowserLinkAction("Inspect Mode", InitiateInspectMode);
}
}
这是用SignalR与注入的JavaScript对话:
private void InitiateInspectMode()
{
Clients.Call(_connection, "setInspectMode", true);
_instance = this;
}
{
get
{
yield return new BrowserLinkAction("Inspect Mode", InitiateInspectMode);
}
}
这是用SignalR与注入的JavaScript对话:
private void InitiateInspectMode()
{
Clients.Call(_connection, "setInspectMode", true);
_instance = this;
}
我可以看到在浏览器的JavaScript里,当我鼠标悬停在浏览器里的元素上面,我可以选定它VS里面的源码甚至把VS拉到前端:
inspectOverlay.mousemove(function (args) {
inspectOverlay.css("height", "0");
var target = document.elementFromPoint(args.clientX, args.clientY);
inspectOverlay.css("height", "auto");
if (target) {
while (target && !browserLink.sourceMapping.canMapToSource(target)) {
target = target.parentElement;
}
if (target) {
if (current && current !== target) {
$(current).removeClass("__browserLink_selected");
}
current = target;
$(target).addClass("__browserLink_selected");
browserLink.sourceMapping.selectCompleteRange(target);
}
}
});
inspectOverlay.click(function () {
turnOffInspectMode();
browserLink.call("BringVisualStudioToFront");
});
inspectOverlay.css("height", "0");
var target = document.elementFromPoint(args.clientX, args.clientY);
inspectOverlay.css("height", "auto");
if (target) {
while (target && !browserLink.sourceMapping.canMapToSource(target)) {
target = target.parentElement;
}
if (target) {
if (current && current !== target) {
$(current).removeClass("__browserLink_selected");
}
current = target;
$(target).addClass("__browserLink_selected");
browserLink.sourceMapping.selectCompleteRange(target);
}
}
});
inspectOverlay.click(function () {
turnOffInspectMode();
browserLink.call("BringVisualStudioToFront");
});
这就是将要来临的技术的味道。One ASP.NET只是一段旅程,并不是目的地。我们还会朝着我们这个方向以及在今后的更新中(Update1等等)有更多的改进,更多的构架,和持续的改善。
浏览器链接只是其中一个功能,请确保查看(和订阅)MSDN上有关ASP.NET和Web工具的Web开发博客。
•One ASP.NET
•Authentication
•The new HTML5 editor
•Azure Web Site tooling
•Scaffolding
•MVC5, Web Forms, SignalR 2, Web API 2
•Entity Framework 6
•OWIN Support and Self-Hosting
•ASP.NET Identity
•NuGet 2.7
请记住,虽然它看上去很多,但是这些几乎都是可由你取舍的附加的更改。你仍然可以在VS2013中制作开发ASP.NET 2应用程序。你可以用你自己的视图引擎,你自己的ORM,你自己的特性,你自己的构架,你自己的组件。由你决定。
我们很快将会有关于构架,修改和自定义添加你自己的新项目的文档和更新,还有新功能的列表并以NuGet软件包发布。详情请参阅http://www.asp.net/vnext 和关于诸多细节的发布说明以及任何重大更改。