跟着官文走了下还是采坑了,应该是自己的问题,记录下来这个实践过程~

什么是Nutui

NutUI(https://nutui.jd.com/#/intro)是一套京东风格的移动端组件库,开发和服务于移动Web界面的企业级前中后台产品。

虽然是基于京东的业务累计生成的UI库,但是由于移动端的视觉规范和交互效果大体类似,且这个组件库可以很好地做到按需引入,并不会引起资源浪费。目前,线上运行的稳定版本是2.*,正在开发基于Vue3.0版本,开发团队前端有50名成员组成,且开源,所以值得推荐。

整体来说,nutui是属于可以10分钟上手的组件库,官文也很简单易懂,大家可以进行碎片化学习。

快速上手

安装

在使用Vue CLI脚手架构建的Vue工程中安装nutui

npm i @nutui/nutui -S

加载

全量引入

在项目的主入口文件(main.js)加载nutui

import Vue from 'vue';
import NutUI from '@nutui/nutui';
import '@nutui/nutui/dist/nutui.css';
 
NutUI.install(Vue);

上述方式会引入所有组件,如果你的工程体量很小,只需要按需引入即可,下面来说明

按需引入

1. 安装webpack插件

npm i @nutui/babel-plugin-separate-import -D

2. 配置babel的配置文件

{
  "plugins": [
    ["@nutui/babel-plugin-separate-import", {
        "style": "scss" // scss表示引入scss
    }]
  ]
}

如果是VueCLI3+,在package.config同级目录下的babel.config.js中添加编译配置

module.exports = {
    css: {
        loaderOptions: {
            // 给 sass-loader 传递选项
            scss: {
                // @/ 是 src/ 的别名
                // 注意:在 sass-loader v7 中,这个选项名是 "data"
                prependData: `
                @import "@/assets/css/custom_theme.scss";
                @import "@nutui/nutui/dist/styles/index.scss";
                `,
            }
        },
    }
}

3. 修改 webpack 配置文件的 sass-loader 配置

{
    loader: 'sass-loader',
    options: {
        data: `@import "@nutui/nutui/dist/styles/index.scss"; `
    }
}

如果是VueCLI3+,在package.config同级目录下创建 vue.config.js,配置scss的加载路径

"plugins": [
       ["@nutui/babel-plugin-separate-import", {
           "style": "scss"
       }]
   ]

4. 在项目中(main.js)只引入用到的组件

import Vue from 'vue';
import { Dialog,Picker } from '@nutui/nutui';
 
Dialog.install(Vue);
Picker.install(Vue);

组件使用

组件的使用方式和Vue中其他组件的使用方式一致,开心~

<template>
    <div>
        <nut-calendar :is-visible.sync="isVisible2"
                      :default-value="date2"
                      :is-auto-back-fill="true"
                      @close="switchPickerClose"
                      @choose="setChooseValue2"
        >
        </nut-calendar>
        <nut-cell :is-link="true" :show-icon="true" @click.native="switchPicker">
            <span slot="title">日期选择</span>
            <span slot="sub-title">有默认日期,选择后自动回填的~~~</span>
            <div slot="desc" class="selected-option">
                <span class="show-value">
                {{date2 ? date2 : '请选择日期'}}
                </span>
            </div>
        </nut-cell>

    </div>
</template>

<script>
    export default {
        name: 'Demo',
        data() {
            return {
                isVisible2: false,
                date2: '2020-12-22'
            };
        },
        methods: {
            setChooseValue2(param) {
                this.date2 = param[3];
            },
            switchPickerClose() {
                this.isVisible2 = !this.isVisible2;
            },
            switchPicker(){
                this.isVisible2 = !this.isVisible2;
            }
        }
    }
</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>

</style>

 

npm run serve / npm run dev 跑一下,成功啦~~~

 

Logo

前往低代码交流专区

更多推荐