• 前端组建


    组件web component,什么是组件以及表现形式

    定义:

    1、以页面功能组件为单位聚合前端资源(读取前端资源)

    2、自动加载约定的css、js资源

    3、将业务数据到渲染数据的转换给独立出来

    特点:

    1、按需加载 只加载必要的前端资源

    2、对应关系明确(所需要加载的资源在同一目录)

    3、职责明确且唯一,对应关系显著

    为了适应复杂的页面业务需求,很多组件选择的是生命周期的方式来组织自己的事件和方法

    一个组件的生命周期包括:

    init 初始化组件根结点和配置

    fetch  加载css和js资源

    render  内容渲染

    ready 进行数据绑定等操作

    update  用来数据的更新

    destory 解除所有的事件监听,删除所有组件节点

    ...

    设计模式之工厂模式:构造器+protoType

    前端组建简单例子

    html

    <!DOCTYPE html>
    <html>
    <head>
        <title>css3动画按钮</title>
        <!-- <link rel="stylesheet" type="text/css" href="./css/animate.css"></link> -->
    </head>
    <body>
        <div id="button">
            <div id="second"></div>
        </div>
    </body>
    </html>
    <script type="text/javascript" src="js/btn.js"></script>

    js

    /*
      0625按钮前端组件实现
      作者:karila
    */
    
    function ButtonFn(){
    	//this.txt=txt;
    	/*公共方法可以放在构造器中*/
    	this.getId=function(n){
            return document.getElementById(n);
    	}
    	/*自动化加载CSS*/
    	this.fetchCss=function(_href){
    		var _dom=document.createElement("link");
    		_dom.rel="stylesheet";
    		_dom.type="text/css";
    		_dom.href=_href;
    		document.body.appendChild(_dom);
    
    	}
    	this.init();
    
    }
    ButtonFn.prototype={
    	/*特有的方法放在prototype中*/
    	/*初始化*/
        init:function(_config){
           var _self=this;
           _self.event(_config);
        },
        /*定义事件*/
        event:function(_config){
        	var _self=this;
        	var _wrap=_self.getId("button");
        	_wrap.onclick=function(){
        		console.log("按钮被电击了");
        		_self.renderTxt(_config.txt);
        	}
    
        },
        /*渲染*/
        renderTxt:function(t){
        	var _self=this;
        	var _second=_self.getId("second");
        	second.innerHTML=t;
        }
    }
    /*组件需要有通用型,需要添加配置文件*/
    var config={
    	txt:"叫我孙悟空"
    }
    var btnObj=new ButtonFn();
    btnObj.init(config);
    btnObj.fetchCss("./css/animate.css");
    

    css

    #button{
        300px;
        height:70px;
        background:#6959ff;
        margin:100px auto;
        overflow: hidden;
        border-radius:10px;
        cursor: pointer;
    }
    #second{
    	300px;
        height:70px;
        background:#ddd;  
        border-radius:10px;  
        transform:translateX(-310px) skew(0deg);
        animation:remove 1s reverse;
        text-align:center;
        line-height:70px;
        font-size: 50px;
    }
    
    #button:hover #second{
    	animation: moves 1s forwards;
    }
    @-webkit-keyframes remove{
      0%{-webkit-transform:translateX(-320px) skew(0deg);}
      20%{-webkit-transform:translateX(50px) skew(-20deg);}
      40%{-webkit-transform:translateX(-50dpx) skew(20deg);}
      60%{-webkit-transform:translateX(25dpx) skew(-8deg);}
      80%{-webkit-transform:translateX(-15px) skew(8deg);}
      100%{-webkit-transform:translateX(0px) skew(0deg);}
    }
    @-webkit-keyframes moves{
      0%{-webkit-transform:translateX(-320px) skew(0deg);}
      20%{-webkit-transform:translateX(50px) skew(-20deg);}
      40%{-webkit-transform:translateX(-50dpx) skew(20deg);}
      60%{-webkit-transform:translateX(25dpx) skew(-8deg);}
      80%{-webkit-transform:translateX(-15px) skew(8deg);}
      100%{-webkit-transform:translateX(0px) skew(0deg);}
    }
    

      

     

  • 相关阅读:
    【阿里聚安全·安全周刊】苹果证实 iOS 源代码泄露|英国黑客赢下官司
    150万元重奖!阿里软件供应链安全大赛正式启动
    【阿里聚安全·安全周刊】山寨外挂有风险养蛙需谨慎|健身追踪热度图爆军事基地位置
    移动APP外挂攻防实战
    阿里云正式上线移动直播问答解决方案,助力APP尽情“撒币”!
    阿里安全资深专家杭特辣评中国网络安全人才之“怪现状”
    【阿里聚安全·安全周刊】Intel芯片级安全漏洞事件|macOS存在漏洞
    阿里聚安全年终盘点|2017互联网安全领域十大话题
    【技术分析】DowginCw病毒家族解析
    独家探寻阿里安全潘多拉实验室,完美越狱苹果iOS11.2.1
  • 原文地址:https://www.cnblogs.com/karila/p/7077038.html
Copyright © 2020-2023  润新知