站内搜索

本次搜索找到结果 82 条

很多人觉得typescript配置只需要ts-loader一加,就好了。没啥难度。。

ok,确实是。下面我在实际写工程时,搭建的ts环境,算是一个分享吧。

基于antd-mobile的less代码改造而成:

$border-color-base: #ddd;

@mixin scale-hairline-common($color, $top, $right, $bottom, $left){
  content: '';
  position: absolute;
  background-color: $color;
  display: block;
  z-index: 1;
  top: $top;
  right: $right;
  bottom: $bottom;
  left: $left;
}

@mixin hairline($direction, $color: $border-color-base, $radius: 0) {
  @if ($direction == 'top') {
    border-top: 1PX solid $color;

    html:not([data-scale]) & {
      @media (min-resolution: 2dppx) {
        position: relative;
        border-top: none;

        &::before {
          @include scale-hairline-common($color, 0, auto, auto, 0);
          width: 100%;
          height: 1PX;
          transform-origin: 50% 50%;
          transform: scaleY(0.5);

          @media (min-resolution: 3dppx) {
            transform: scaleY(0.33);
          }
        }
      }
    }
  }
  @if ($direction == 'right') {
    border-right: 1PX solid $color;

    html:not([data-scale]) & {
      @media (min-resolution: 2dppx) {
        position: relative;
        border-right: none;

        &::after {
          @include scale-hairline-common($color, 0, 0, auto, auto);
          width: 1PX;
          height: 100%;
          background: $color;
          transform-origin: 100% 50%;
          transform: scaleX(0.5);

          @media (min-resolution: 3dppx) {
            transform: scaleX(0.33);
          }
        }
      }
    }
  }
  @if ($direction == 'bottom') {
    border-bottom: 1PX solid $color;

    html:not([data-scale]) & {
      @media (min-resolution: 2dppx) {
        position: relative;
        border-bottom: none;

        &::after {
          @include scale-hairline-common($color, auto, auto, 0, 0);
          width: 100%;
          height: 1PX;
          transform-origin: 50% 100%;
          transform: scaleY(0.5);

          @media (min-resolution: 3dppx) {
            transform: scaleY(0.33);
          }
        }
      }
    }
  }
  @if ($direction == 'left') {
    border-left: 1PX solid $color;

    html:not([data-scale]) & {
      @media (min-resolution: 2dppx) {
        position: relative;
        border-left: none;

        &::before {
          @include scale-hairline-common($color, 0, auto, auto, 0);
          width: 1PX;
          height: 100%;
          transform-origin: 100% 50%;
          transform: scaleX(0.5);

          @media (min-resolution: 3dppx) {
            transform: scaleX(0.33);
          }
        }
      }
    }
  }
  @if ($direction == 'all') {
    border: 1PX solid $color;
    border-radius: $radius;

    html:not([data-scale]) & {
      @media (min-resolution: 2dppx) {
        position: relative;
        border: none;

        &::before {
          content: '';
          position: absolute;
          left: 0;
          top: 0;
          width: 200%;
          height: 200%;
          border: 1PX solid $color;
          border-radius: $radius * 2;
          transform-origin: 0 0;
          transform: scale(0.5);
          box-sizing: border-box;
          pointer-events: none;

          // @media (min-resolution: 3dppx) {
          //   width: 300%;
          //   height: 300%;
          //   border-radius: $radius * 3;
          //   transform: scale(0.33);
          // }
        }
      }
    }
  }
}

很多时候,我们写了一个UI库,但是别人在用的过程中会出现问题。那么这个问题,可能是我们的,也可以是他们的,所以往往需要一个类似codesandbox的网站。

那个网站似乎没法用内网的npm包,所以这点比较蛋疼。

好在像react-live能够简单地支持上面的功能,即在线编辑代码。

那么来演示一下吧。

import React from 'react';
import ReactDOM from 'react-dom';

import * as dpl from 'dpl-react';

import "dpl-react/dist/dpl.css";

import {
  LiveProvider,
  LiveEditor,
  LiveError,
  LivePreview
} from 'react-live';

const scope = { dpl };

const importRegex = /import(?:["'\s]*([\w*{}\n, ]+)from\s*)["'\s]*([@\w/_-]+)["'\s]*;?/gm;

const imports = {
    "dpl-react": "dpl",
    "moment": "moment"
}

const transformCode = (code) => {
  return code.replace(importRegex, (match, p1, p2) => {
    const matchingImport = imports[p2];
    if (!matchingImport) {
      return match;
    }
    return 'const ' + p1 + ' = ' + matchingImport + ';';
  });
}

const code = `
  import { Button } from 'dpl-react';

  render(<Button>123</Button>)
`;

const App = () => {
  return (
    <LiveProvider transformCode={transformCode} code={code} scope={scope} noInline={true}>
      <LiveEditor />
      <LiveError />
      <LivePreview />
    </LiveProvider>
  )
};

ReactDOM.render(<App />, document.getElementById("root"));

效果如下:

alt

接下去无非是样式的美化而已。

我之前在文章中有提过UI库按需加载的实现思路。这次说一个新的,再加上css如何按需加载

这两个星期基本上在做移动端组件的改造。

以下简单和大家做一些分享。

记个笔记。。。

这周终于把剩下的admin模板写的差不多了,所以继续来记录一下写代码中碰到的一些问题,算是一些总结吧!

这周开始折腾后台admin的模板开发。之前其实有搞过一版,但后面UI这一块调整了一下,再者我也准备将route这一块单独拿出来。

最近配合同事一起完善了一下UI组件,以下算是一些记录吧。

不知不觉来我司已经三周年多了。写下此篇文章,更多的是对过去的一些回忆。