记一次矩阵列单元格合并和拆分组件的开发

本文记述了一次基于JavaScript和HTML5开发矩阵列单元格合并和拆分组件的过程。项目灵感来源于数独游戏,采用原生DOM、ES6和less,借助webpack打包,支持在运营端配置商城楼层布局。文章详细介绍了项目搭建、开发流程及遇到的问题,包括宫格主体的渲染、合并拆分事件处理和蒙层操作。项目已开源在GitHub,并发布到npm仓库。
摘要由CSDN通过智能技术生成

1、思路来源

最近公司做商城的项目,商城首页有楼层设计,楼层需要自定义布局,于是在运营端配置的时候就需要预定一个矩阵列,通过鼠标滑动,确定最终的楼层布局。

image.png

拿到需求,第一个想到的是以前学过的一个开发数独游戏的课程,虽然需求不太一样,但都是基于宫格这样的结构开发的。

这个数独游戏是基于原生DOM,使用ES6的class和less动态样式表开发,最后使用gulp+webpack打包生成。借此基础,为了让我的组件能够兼容原生和框架,我选择了基于原生DOM,使用ES6的class和less动态样式表开发,最后使用webpack打包生成,发布至GitHub开源,发布到npm仓库。在使用的的时候只需要new一个实例对象,就生成了所需要的可以合并、拆分的矩阵列,如下:

aa.gif

项目地址:https://github.com/cumtchj/merge-split-box 欢迎star

2、项目搭建

项目使用webpack打包,涉及到ES6语法,就需要使用babel,样式使用scss(最终打包出了点小问题,把scss全部转为了使用js直接操作dom样式),开发过程中为了可以实时查看结果,使用了webpack-dev-server热启动。

项目结构如下:

image.png

打包配置如下:

module.exports = function () {
  let config = {
    optimization: {
      minimizer: []
    },
    plugins: [
      new HtmlWebpackPlugin({
        template: "./src/index.html",
      }),
      new CleanWebpackPlugin({cleanOnceBeforeBuildPatterns: ["dist"]}),
    ],
  }
  if (ENV === "development") {
    config.devServer = {
      contentBase: "./dist",
      open: true,
      port: 8080,
      hot: true,
      hotOnly: true
    };
    config.plugins.push(new webpack.HotModuleReplacementPlugin())
  }

  // 打包以后使用压缩,出现不知名报错,故弃用
  // if(ENV==="production"){
  //   config.optimization.minimizer.push( new UglifyjsWebpackPlugin(
  //   {
  //   uglifyOptions: {
  //     mangle: true,
  //     output: {
  //       comments: false,
  //       beautify: false,
  //     },
  //   }
  // }
  // ))
  // }

  return {
    mode: ENV,
    devtool: ENV === "production" ?
      false :
      "clean-module-eval-source-map",
    entry: {
      index: PACK_TYPE === 'example' ? './src/example' : './src/index'
    },
    output: {
      path: path.resolve(__dirname, "dist"),
      filename: "[name].js",
      library: "MergeSplitBox",
      libraryTarget: "umd",
      libraryExport: "default"
    },
    resolve: {
      extensions: [".js", '.scss']
    },
    module: {
      rules: [
        {
          test: /\.js$/,
          loader: "babel-loader",
          exclude: "/node_modules/",
        }, {
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值