zoukankan      html  css  js  c++  java
  • SeaJS+Less+jQuery写代码小记

    这两天在使用Less来写了一个小程序。后来又把SeaJS加入,使用SeaJS来模块化,在这个过程中碰到过不少的问题。特别是在使用SeaJS时。

    1、从http://seajs.org/下载最新的SeaJS1.2。解压到我们自己的项目目录下,下面是我使用的目录结构,并且单独给它一个目录,如:seajs目录。

    2、将之前我们使用的Less先使用SeaJS来封装一下,我就吃亏在这里,没有对Less进行封装,导致就是无法正常的使用Less。

     1 (function(factory) {
     2 
     3   if (typeof define === 'function') {
     4     define('less', [], factory);
     5   }
     6   else {
     7     factory();
     8   }
     9 })(
    10 function() {
    11 // Less的源代码
    12 return less;
    13 });

    将修改后的less.js放到seajs目录下。如果不把less.js与seajs放在一个目录下,那么就要修改seajs/plugin-less.js才能正常的加载less文件。比如说我们要将less.js与我们写的js都放在resources/js/目录下,那么plugin-less.js文件就经如下修改。

    为了方便推荐还是跟seajs放在一个目录下。

    3、封装下jquery。

    define(function(require, exports) {
    // jquery原始代码
    return $.noConflict();
    });

    4、引入lesss样式表。以下是节选至combox.js

    define(function(require, exports) {
        require('../css/default.less');
        
        var $ = require('./jquery');
        // 省略N行代码
    });

    js文件可以不写后缀,而样式文件由于是.less,要加上后缀名。

    由于.less文件存放在/resources/css/default.less目录下,与我们的combox.js文件不在一个目录下,因此引入的时候要加上级目录结构。即:../css/。引入jquery时最好使用./来引用,用来标识jquery与combox在一个目录下,对于sea.js与我们的代码不在一个目录结构下很有必要,否则seajs会认为jquery与seajs在一个目录,从而导致找不到jquery.js文件。

    5、书写我们自己的主入口init.js

     1 define(function(require, exports) {
     2     var $ = require('./jquery');
     3     
     4     require('./combox');
     5     
     6     $('#search').combox({
     7         data : ['曲阜', '淄博'],
     8         height : 170
     9     });
    10     
    11     $('#more').click(function() { alert($('#search').val()); });
    12     
    13 });

    这个文件与combox.js文件没有太大的差别。

    6、在html中引入seajs,并且指定入口。

    直接在script标签中指定入口。

    <script type="text/javascript" src="resources/seajs/sea.js" data-main="./resources/js/init"></script>

    直接在script标签中指定入口文件的方式适合不需要预加载文件的情况下。如果需要预加载插件就需要在seajs.config中指定预加载的插件,在我们的这个程序中正好也需要预载入plugin-less插件。

    <script type="text/javascript" src="resources/seajs/sea.js"></script>
    <script type="text/javascript">
        seajs.config({
            preload: ['plugin-less']
        }).use('./resources/js/init');
    </script>

    PS:在从seajs官方下载回来的zip包中的示例文件是写在js文件中的,但在1.2中是不可以的。

    以下是我写的一段小代码的截图,有兴趣的可以看下。如果要运行请基于站点来运行,并且使用firefox,我没做浏览器兼容处理。

    源代码下载地址:http://115.com/file/an8s90rr#GMailUI.rar

  • 相关阅读:
    PLSQL查询显示乱码或者问号
    Sonar 扫描C#代码 排除文件
    C# 短日期转换为DateTime
    电脑远程连接不上或者ip的地址一直是169.254
    C#导出CSV或者EXCEL文件转换文本
    Oracle 计算两个日期相差天时分秒
    Linux 做网关
    Python 内置函数
    Python Fileinput 模块
    Python-2.7 配置 tab 自动补全功能
  • 原文地址:https://www.cnblogs.com/AUOONG/p/2584665.html
Copyright © 2011-2022 走看看