Meta
VILIC02:10 - 05.28 2011

再为腾讯的比赛写程序, 话说这个程序本身没什么难度, 就是普通的富JS页面的网页而已, 要比的有两点, 一个是主题, 一个是UI. 不过难度在我刚开始两天, 还有不到十天的时间. 虽然说貌似不用在那之前作出成品, 但半成品总得有吧.

后台选择的是PHP, 我最恨的一种脚本, 哪有什么语法, 纯粹就是堆砌! (PHPer莫生气)

那说下今天给vejis添加/改变的内容.

1. enum_ 用法如下:

var Option = enum_("abc", "def", "ghi");
//Option.abc instanceof Option == true

2. static_/public_/private_这个是针对类的, 例子如下:

var Class = class_(function (pub, pri) {
    this._(function () {
        //pub.test1 == "123"
        //pri.test2 == "321"
    });
}).static_(function () {
    this.public_(function () {
        this.test1 = "123";
    });
    this.private_(function () {
        this.test2 = "321";
    });
});

//Class.test1 == "123"
//Class.test2 == undefined

3. Typed Dictionary, 例子如下:

var dict = new (Dictionary(Object, Integer))();
var o1 = {}, o2 = {}, o3 = {};
dict.set(o1, 123);
dict.set(o2, 456);
//dict.get(o1) == 123
//dict.get(o2) == 456
//dict.exists(o3) == false

Original link of this archive: http://www.vilic.info/blog/archives/687
本文的原始链接: http://www.vilic.info/blog/archives/687

VILIC11:54 - 03.30 2011

刚刚群里有人问到JavaScript的Cookies操作, 于是想到之前也写过一个, 刚刚一搜, 是去年8月份的事情了... 不过功能还算不错, 而且使用方便, 于是整理一下, 献上:

<!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>
    <title></title>
    <script src="http://www.vilic.info/vejis/vejis.1.0.0.js" type="text/javascript"></script>
    <script src="http://www.vilic.info/vejis/cookies.1.0.0.js" type="text/javascript"></script>
    <script type="text/javascript">
        /*
        cookies[String name] 获取cookies集合中名为name的Cookie的值.
        cookies.clear() 清除所有Cookie, 并更新cookies集合, 无返回值.
        cookies.del(String name) 删除相应名称的Cookie, 并更新cookies集合, 无返回值.
        cookies.del(Array names) 批量删除相应名称的Cookie, 并更新cookies集合, 无返回值.
        cookies.get(String name) 更新cookies集合, 获取相应名称的Cookie的值, 返回值为String.
        cookies.refresh() 更新cookies集合, 无返回值.
        cookies.set(String name, String value) 设置相应名称的Cookie的值, 并更新cookies集合, 无返回值.
        cookies.set(String name, String value, Date date) 设置相应名称的Cookie的值与过期时间, 并更新cookies集合, 无返回值.
        cookies.set(Array names, Array values) 批量设置相应名称的Cookie的值, 并更新cookies集合, 无返回值.
        */

        if (cookies["abc"] == undefined) {
            alert("set cookie");
            cookies.set("abc", "123");
        }

        alert(cookies["abc"]);
    </script>
</head>
<body>

</body>
</html>

相关文件:
http://www.vilic.info/vejis/vejis.1.0.0.js
http://www.vilic.info/vejis/cookies.1.0.0.js

Original link of this archive: http://www.vilic.info/blog/archives/646
本文的原始链接: http://www.vilic.info/blog/archives/646

VILIC03:24 - 03.13 2011

这个是之前一篇 (http://www.vilic.info/blog/archives/610) 的升级版, 添加了更强的对 "类" 的支持, 取消了Null类型, 顺便修正了一些bug.

脚本链接: http://www.vilic.info/vejis/vejis-mo.js

然后是用法:

/* 函数的用法 */

//创建一个函数并定义重载1
//这里也可以使用 var fn = _(); 创建空函数, 并在以后添加重载
var fn = _(function () {
    alert("No arguments!");
});

//重载2
fn._(String, function (str) {
    alert("You got me a string: " + str + ".");
});

//重载3
fn._(String, Integer, function (str, n) {
    alert("The string is: " + str + "; and the integer is: " + n + ".");
});

fn();
fn("test1");
fn("test2", 123);

/* 类的用法 */
//定义一个类
var C = class_(function () {
    var x;

    //成员函数
    this.getX = _(function () {
        return x;
    });

    /* 也可无构造函数 */
    //构造函数重载1
    C._(Integer, function (i) {
        x = "Integer: " + i;
    });

    //构造函数重载2
    C._(String, function (s) {
        x = "String: " + s;
    });
});

//创建两个C的实例
var c1 = new C("abc");
var c2 = new C(123);

alert(c1.getX());
alert(c2.getX());

Original link of this archive: http://www.vilic.info/blog/archives/638
本文的原始链接: http://www.vilic.info/blog/archives/638

VILIC01:29 - 08.19 2010

Version: 0.4

昨天主要是添加了HTML代码高亮和CSS代码高亮, 并且自动识别HTML/CSS/JS. 同时也能高亮HTML中嵌套的CSS和JS. 有些判断并不是很严谨, 但是多数情况下是适用的. 下面分别是HTML/CSS/JS代码示例.

HTML代码:

<!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>
    <!-- HTML Code -->
    <title>Vlight Demo</title>
    <style type="text/css">
        /* CSS Code */
        body { margin: 0px; line-height: 16px; font-size: 12px; font-family: Microsoft Yahei, Arial; }
        #test_div { height: 40px; }
        .test { background-color: #FFFFFF; }
    </style>
    <script src="vejis.js" type="text/javascript"></script>
    <script src="vlight.js" type="text/javascript"></script>
    <script type="text/javascript">
        /* JavaScript Code */
        vejis.use(vejis, true); //use vejis namespace
        _event.add(window, 'resize', resize); //add an event

        function resize() {
            var width = document.body.offsetWidth;
            alert(width);
        }
    </script>
</head>
<body>
    <h1>Vlight Demo</h1>
    <div id="test_div">
        <a href="http://www.vilic.info/" title="VILIC's Blog">VILIC's Blog</a>
        <img alt="" src="http://www.vilic.info/xxx.jpg" />
        <div></div>
    </div>
</body>
</html>

独立的CSS代码:

/* CSS Code */
body { margin: 0px; line-height: 16px; font-size: 12px; font-family: Microsoft Yahei, Arial; }
#test_div { height: 40px; }
.test { background-color: #FFFFFF; }

独立的JavaScript代码:

/* JavaScript Code */
vejis.use(vejis, true); //use vejis namespace
_event.add(window, 'resize', resize); //add an event

function resize() {
    var width = document.body.offsetWidth;
    alert(width);
}

Original link of this archive: http://www.vilic.info/blog/archives/527
本文的原始链接: http://www.vilic.info/blog/archives/527

VILIC00:59 - 08.17 2010

Version: 0.0.0.4

昨天做的东西比较多, 有大致有cookie的操作, 简单的get和post, json.

cookie的操作目前有1个集合, 5种方法共8次重载. (vejis的重载是我的大爱啊!) 简单操作的例子.

vejis.use(vejis, true); //使用vejis命名空间.

cookies.set('name', 'Vilic'); //添加名称为name的cookie, 值为'Vilic'.
cookies.set(['age', 'sex'], ['17', 'male']); //批量添加.

alert(cookies['name']);

cookies.del('name'); //删除名称为name的cookie.

alert(cookies['name']);

然后是xmlhttp, 做得比较简单, 够我用就好了:

vejis.use(vejis, true);

var data = new xmlhttp.Data();
data.title = 'This is a test!';
data.content = 'Hello, I\'m Vilic!';

var callback = _(Boolean, String, Number, function (done, text, status) {
    alert('Done:\n' + done + '\nText:\n' + text + '\nStatus:\n' + status);
});

var xhr = xmlhttp.post('sample.ashx', data, callback);

最后是json, 这个我只做了post带callback的, 因为一般不会用get来传递json.

vejis.use(vejis, true);

var callback = _(Boolean, Object, Number, function (done, value, status) {
    alert(JSON.stringify(value));
});

var obj = { name: 'Vilic', age: 18, hobbies: ['Physics', 'JavaScript', 'Drawing'] };

json.post('sample.ashx', 'json', obj, callback);

现在文件已经有500多行了, 虽然与一些专业的框架还相距甚远. 呵呵, 比不得. 顺便昨天七夕, 我跟代码从早到晚都在一起...

Original link of this archive: http://www.vilic.info/blog/archives/509
本文的原始链接: http://www.vilic.info/blog/archives/509