前端组件化开发

作者: visitor009 | 来源:发表于2018-09-17 23:08 被阅读0次

目录

  • 什么是组件
  • 好处
  • 组件分类
  • 定义组件和使用
  • 注意事项

什么是组件:

一个按钮,一个输入框,都算一个组件,只不过是系统提供给我们的,我们需要自己的组件,如自定义弹框,轮播图

好处:

  • 可复用性
  • 可维护性

组件分类 :

  • 独立组件:不依赖框架
  • 框架通用组件:基于jquery,基于react,意思要引入某个框架才能正常用

定义组件和使用:

如弹框组件

定义组件

// popUp.css
popUp-alert {
/* 使用组件名前缀 命名类名*/
* {
    padding: 0;
    margin: 0;
    box-sizing: border-box;
}
.popUp-alert {
    position: fixed;
    top: 50%;
    left: 50%;
    transform: translate(-50%,-50%);
    width: 500px;
    height: 300px;
    box-shadow: 0 0 12px rgba(0,0,0,.5);
    border: 1px solid #000;
    text-align: center;
    line-height: 300px;
}
}
// PopUp.js
class PopUp {
    static alert(
        options = {
            content: '',
            title: '',
            style: { width: 500, height: 300, x: 50, y: 50 },
            handle: null,
            hasCloseBtn: false
        }) {

        if (!$('.popUp-alert').length) {
            let { content, style, handle, title, hasCloseBtn } = options,
                box = $(`<div class="popUp-alert"><div class="popUp-title">${title}</div></div>`),
                confirmBtn = $('<button type="button" class="popUp-confirm-btn">确定</button>');

            box.css('width', `${style.width}px`);
            box.css('height', `${style.height}px`);
            box.css('left', `${style.x}%`);
            box.css('top', `${style.y}%`);
            box.css('line-height', `${style.height}px`);

            if (hasCloseBtn) {
                let closeBtn = $('<button type="button" class="popUp-close">X</button>');
                box.append(closeBtn);
                closeBtn.click(() => {
                    box.hide();
                })
            }

            box.appendTo('body');
            box.append(content);
            box.append(confirmBtn);
            confirmBtn.click(() => {
                handle && handle();
                box.hide();
            })
        } else {
            $('.popUp-alert').show();
        }
}
export default PopUp;

// 使用时直接引入即可,需使用构建工具打包,如webpack


// index.html
<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>组件化开发</title>
    <link rel="stylesheet" href="popUp.css">
</head>
<body>
    <button id="alert">alert</button>

    <script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
    <script src="bundle.js"></script>
</body>
</html>
// bundle.js
import PopUp from './popUp';

$('#alert').click(()=>{
    PopUp.alert({content: 'welcome!',title:'提示',style:{width: 300,height:200},hasCloseBtn: false});
})

注意事项

  • 使用模块化开发
  • 设计组件时考虑提供哪些接口进行配置

webpack打包模板

const path = require('path');
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
const HtmlWebpackPlugin = require('html-webpack-plugin');

module.exports = {
  entry: './src/js/index.js',
  output: {
    filename: 'bundle.js',
    path: path.resolve(__dirname, 'dist')
  },
  module: {
    rules: [
      {
        test: /\.css$/,
        use: [
          {
            loader: MiniCssExtractPlugin.loader,
            options: {
              publicPath: '../'
            }
          },
          "css-loader"
        ]
      }
    ]
  },
  plugins: [
    new MiniCssExtractPlugin({
      filename: "[name].css",
      chunkFilename: "[id].css"
    }),
    new HtmlWebpackPlugin({
      filename: 'index.html',
      template: './index.html',
    })
  ],
};

相关文章

  • 前端开发过程中有哪些问题需要考虑?

    前端开发过程中有哪些问题需要考虑? 组件库 模块化 前端业务团队 做的事情沉淀组件库 团队基础沉淀模块化 开发...

  • vue基础入门(3)

    3.组件基础 #3.1.什么是组件? #3.1.1.理解组件 前端组件化开发是目前非常流行的方式,什么是前端组件化...

  • Lightning框架示例 - 动态建立Lightning组件

    动态建立Lightning组件 组件化前端开发是Lightning框架的优点之一。在进行Lightning应用开发...

  • 深入探讨前端组件化开发

    前端组件化开发,已经有多年的历史了,不管是服务端渲染,还是前端SPA,都有了比较成熟的组件化开发的方案。随着组件化...

  • 前端该如何与后端合作?

    1、前后端分离 前端与后端的分离,能使前端的开发脱离后端的开发模式,拥有更大的自由度,以此便可做前端工程化、组件化...

  • webpack基础笔记

    webpack基础 1.前端工程化 实际的前端开发: 模块化:(js的模块化,css的模块化,资源的模块化) 组件...

  • webpack制作自己的JS库

    前端组件化、模块化已经成为一个前端开发者必备的技能,之前做了APP的组件化模块化后。萌生了将web、H5也进行了组...

  • 06Vue.js快速入门-Vue组件化开发

    组件其实就是一个拥有样式、动画、js逻辑、HTML结构的综合块。前端组件化确实让大的前端团队更高效的开发前端项目。...

  • React组件一

    组件化开发一 目前,前端三大框架(Vue,React,Angular)都在使用组件化的我形式进行开发。19年最火的...

  • 浅谈前端组件化协同开发

    浅谈前端组件化协同开发 #想象中的组件化开发与现实中的组件化开发 在很久以前,那个时候人们做网页还离不开Dream...

网友评论

    本文标题:前端组件化开发

    本文链接:https://www.haomeiwen.com/subject/qprjnftx.html