前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Framework7源码学习-1-概览

Framework7源码学习-1-概览

作者头像
libo1106
发布2018-08-08 15:52:45
4470
发布2018-08-08 15:52:45
举报
文章被收录于专栏:Web 开发

源码打包地址:

https://raw.githubusercontent.com/qq286735628/Framework7/master/dist/js/framework7.js

整个Framework7框架,由Framework7核心代码、jQuery风格的DOM操作库、DOM选择器、DOM操作辅助工具、Ajax这五部分组成。

纵观

代码语言:javascript
复制
(function(){
    'use strict';
 
    // 框架核心代码
    window.Framework7 = function(params){};
 
    // jQuery风格的DOM库
    var Dom7 = function(arr){};
 
    Dom7.prototype = {
        addClass: function(className){},
        removeClass: function(className){},
        hasClass: function(className){},
        toggleClass: function(className){},
        attr: function(key, value){},
        data: function(key, value){},
        val: function(value){},
 
        transform: function(transform){},
        transition: function(duration){},
 
        on: function(eventName, targetSelector, listener){},
        off: function(event, listener){},
        trigger: function(eventName, eventData){},
        transitionEnd: function(callback){},
        animationEnd: function(callback){},
 
        width: function(){},
        outerWidth: function(margins){},
        height: function(){},
        outerHeight: function(margins){},
        offset: function(){},
        hide: function(){},
        show: function(){},
        css: function(props, value){},
 
        each: function(callback){},
        html: function(html){},
        text: function(text){},
        is: function(selector){},
        indexOf: function(el){},
        index: function(){},
        eq: function(index){},
        append: function(newChild){},
        prepend: function(newChild){},
        insertBefore: function(selector){},
        insertAfter: function(selector){},
        next: function(){},
        prev: function(){},
        parent: function(selector){},
        parents: function(selector){},
        find: function(selector){},
        children: function(selector){},
        remove: function(){}
 
    };
 
    // DOM选择器
    var $ = function(selector, context){};
 
    // DOM操作工具
    $.parseUrlQuery = function(url){};
    $.isArray = function(arr){};
    $.unique = function(arr){};
    $.trim = function(str){};
    $.serializeObject = function(obj){};
 
    $.getTranslate = function(el, axis){};
 
    $.fn = Dom7.prototype;
 
    // Ajax
    $.ajax = function(options){};
 
    Framework7.$ = $;
 
    // 特性检测
    Framework7.prototype.support = (function(){})();
 
    // 设备检测
    Framework7.prototype.device = (function()){}();
})

整个库文件,通过最外层的匿名函数 (function(){})() 进行封装,防止内部变量污染全局。

使用 window.Framework7 = function(){} 方式暴露Framework7这个构造函数给外部使用。

其DOM操作和Ajax部分,采用仿jQuery的风格,最大程度减少开发者学习成本。

通过上面的代码片段,可以看到,一个JS框架,主要由框架核心代码,DOM操作,Ajax操作这三部分组成。由于jQuery的占有率非常高,很多人的JS操作习惯,实际上是jQuery操作习惯,故大部分的框架,其DOM操作和Ajax操作都会去模仿jQuery的风格。

Framework7核心

代码语言:javascript
复制
window.Framework7 = function(params){
    // 定义app这个别名
    var app = this;
 
    // 默认参数
    app.params = {}
 
    // 合并参数列表
    for (var param in params){
        app.params[param] = params[param];
    }
 
    app.init = function(){};
 
    // 对象初始化
    if(app.params.init) app.init();
 
    // 返回对象实例
    return app;
}

上面代码,可以看到一个简单的JS构造函数的写法。

通过 var app = this 这种别名方式,来保存this。

通过 for in 循环,来实现带参数初始化。

通过结尾的 return app ,来返回一个对象实例,供外部采用 newFramework7() 初始化的时候使用。

通过上面的代码片段,可以看到,一个JS框架,主要由框架核心代码,DOM操作,Ajax操作这三部分组成。由于jQuery的占有率非常高,很多人的JS操作习惯,实际上是jQuery操作习惯,故大部分的框架,其DOM操作和Ajax操作都会去模仿jQuery的风格。

Framework7核心

JavaScript

window.Framework7 = function(params){ // 定义app这个别名 var app = this; // 默认参数 app.params = {} // 合并参数列表 for (var param in params){ app.params[param] = params[param]; } app.init = function(){}; // 对象初始化 if(app.params.init) app.init(); // 返回对象实例 return app; }

1234567891011121314151617181920

window.Framework7 = function(params){    // 定义app这个别名    var app = this;     // 默认参数    app.params = {}     // 合并参数列表    for (var param in params){        app.params[param] = params[param];    }     app.init = function(){};     // 对象初始化    if(app.params.init) app.init();     // 返回对象实例    return app;}

上面代码,可以看到一个简单的JS构造函数的写法。

通过 var app = this 这种别名方式,来保存this。

通过 for in 循环,来实现带参数初始化。

通过结尾的 return app ,来返回一个对象实例,供外部采用 new Framework7() 初始化的时候使用。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2014-05-212,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 纵观
  • Framework7核心
  • Framework7核心
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档