.net中将类库编译成.dll文件,我们大家都知道。但初听说将.js文件编译成.dll文件就觉得有点新奇了。没错,这里可以将javascript编译成动态库文件供页面调用。也许这里有些朋友就会问了,javascript文件在项目中调用不也是很方便的吗,为什么编译成.dll文件呢?确实直接调用js文件也是比较方便,这里只是算提供另一种调用方式吧。
下面开始我们的探索之行吧,首先我们需要在项目中新建一个类库项目、添加.js文件。在.js文件中写上相应的测试代码:
1.新建类库项目:
2.选中JSTest.js文件设置文件属性为"嵌入的资源" 并编写js测试脚本代码:
属性设置如下所示:
JSTest.js测试脚本如下:
(function show(){
alert("脚本测试!");
})();
alert("脚本测试!");
})();
3.在类库项目Properties文件中的AssemblyInfo.cs文件添加一行代码:
注意:其中DYJ.Js.js.JSTest.js,DYJ.Js是类库名称,js是文件夹目录,JSTest.js是具体的文件名,如果没有文件夹js目录可省略
//定义组件内的内嵌资源的元数据属性
[assembly: System.Web.UI.WebResource("DYJ.Js.js.JSTest.js", "application/x-javascript")]
[assembly: System.Web.UI.WebResource("DYJ.Js.js.JSTest.js", "application/x-javascript")]
4.在类库项目中添加一个客户端脚本注册的类,具体代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.UI;
namespace DYJ.Js
{
public class JSRefer:System.Web.UI.WebControls.WebControl
{
protected override void OnPreRender(EventArgs e)
{
if (this.Page != null)
{
ClientScriptManager manager = this.Page.ClientScript;
manager.RegisterClientScriptResource(typeof(JSRefer), "DYJ.Js.js.JSTest.js");
}
base.OnPreRender(e);
}
}
}
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.UI;
namespace DYJ.Js
{
public class JSRefer:System.Web.UI.WebControls.WebControl
{
protected override void OnPreRender(EventArgs e)
{
if (this.Page != null)
{
ClientScriptManager manager = this.Page.ClientScript;
manager.RegisterClientScriptResource(typeof(JSRefer), "DYJ.Js.js.JSTest.js");
}
base.OnPreRender(e);
}
}
}
5.生成该类库项目,在需要添加该.js文件的项目中添加引用:
接下来,就是在页面上调用js了。这里的.dll文件已经生成好了,具体的调用方式和以往没有什么区别。测试结果如图所示,到这里编译.js文件成.dll文件也就完成了。
前端页面主要测试代码:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<%@ Register Assembly="DYJ.Js" Namespace="DYJ.Js" TagPrefix="cc1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>无标题页</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<cc1:JSRefer ID="JSRefer1" runat="server" />
</div>
</form>
</body>
</html>
<%@ Register Assembly="DYJ.Js" Namespace="DYJ.Js" TagPrefix="cc1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>无标题页</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<cc1:JSRefer ID="JSRefer1" runat="server" />
</div>
</form>
</body>
</html>
运行页面,弹出"脚本测试"窗口,测试成功...