anytao.net | 《你必须知道的.NET》网站 | Anytao技术博客
发布日期:2010.10.22 作者:Anytao
© 2010 Anytao.com ,Anytao原创作品,转贴请注明作者和出处。
Introduction
How to have a better code organization? When your software become bigger and bigger, the code will torture you all the time. So, the smart guy innovate the Namespace to handle this issue. For example, in .NET world, we define the class in scope of namespace:
namespace Anytao.Common
{
public class Console
{
public static void Read(string msg)
{
}
}
}
Then, we can use Console as below:
Anytao.Common.Console.Read("Hello, world.");
It will bring the following benefit:
- Better code organization
- Avoid naming conflict. For example, If we have another Console in the same assembly, it will cause error without namespace control. Now, we can absolutely separate naming by namespace.
Anytao.Common.Console.Read("Hello, world.");
System.Console.Read();
Namespace in JavaScript
However, there is no language level support in JavaScript. It will cause a lot of problem and mess the process of development. Here is a experience in our project.
/* Define the NS in imxiqi.js */
var X8JS = {};
X8JS.ns = function (path) {
var arr = path.split(".");
var ns = "";
for (var i = 0; i < arr.length; i++) {
if (i > 0)
ns += ".";
ns += arr[i];
eval("if(typeof(" + ns + ") == 'undefined') " + ns + " = new Object();");
}
};
(注,上述代码来自互联网)
How to use?
- Reference the imxiqi.js file in your page head.
<scriptsrc="http://www.cnblogs.com/static/js/imxiqi.js"type="text/javascript"></script>
- Register the namespace when you use
X8JS.ns("XLR8.feed");
- Define the class, variables and others in your namespace
X8JS.ns("XLR8.feed");
X8JS.ns("Ethos.common");
XLR8.feed =
{
alert: function (msg) {
alert(msg);
},
load: function () {
}
};
Ethos.common.copyright = function BindData(data) {
$("#copyright").html( data + " / Ethos");
};
<script language="javascript" type="text/javascript">
$(document).ready(function () {
XLR8.feed.alert("Hello");
XLR8.feed.load();
Ethos.common.copyright("Anytao");
})
</script>
Hey. It’s simple and useful.