vue-cli 模式下安装 uni-ui

目录

easycom

自定义easycom配置的示例

npm安装 uni-ui

准备 sass

安装 uni-ui

注意


easycom

传统vue组件,需要安装、引用、注册,三个步骤后才能使用组件。easycom将其精简为一步。

只要组件路径符合规范(具体见下),就可以不用引用、注册,直接在页面中使用。如下:

<template>
	<view class="container">
		<comp-a></comp-a>
		<uni-list>
		</uni-list>
	</view>
</template>
<script>
	// 这里不用import引入,也不需要在components内注册uni-list组件。template里就可以直接用
	export default {
		data() {
			return {}
		}
	}
</script>

路径规范指:

  1. 安装在项目根目录的components目录下,并符合components/组件名称/组件名称.vue
  2. 安装在uni_modules下,路径为uni_modules/插件ID/components/组件名称/组件名称.vue

工程目录:

┌─components
│  └─comp-a
│    └─comp-a.vue      符合easycom规范的组件
└─uni_modules          [uni_module](/plugin/uni_modules.md)中符合easycom规范的组件
   └─uni_modules
     └─uni-list
       └─components
         └─uni-list
           └─ uni-list.vue
	

不管components目录下安装了多少组件,easycom打包会自动剔除没有使用的组件,对组件库的使用尤为友好。

组件库批量安装,随意使用,自动按需打包。以官方的uni-ui为例,在HBuilderX新建项目界面选择uni-ui项目模板,只需在页面中敲u,拉出大量组件代码块,直接选择,即可使用。大幅提升开发效率,降低使用门槛。

uni-app插件市场下载符合components/组件名称/组件名称.vue目录结构的组件,均可直接使用。

自定义easycom配置的示例

easycom是自动开启的,不需要手动开启,有需求时可以在pages.jsoneasycom节点进行个性化设置,如关闭自动扫描,或自定义扫描匹配组件的策略。设置参数如下:

属性类型默认值描述
autoscanBooleantrue是否开启自动扫描,开启后将会自动扫描符合components/组件名称/组件名称.vue目录结构的组件
customObject-以正则方式自定义组件匹配规则。如果autoscan不能满足需求,可以使用custom自定义匹配规则

如果你的组件,不符合easycom前述的路径规范。可以在pages.json的easycom节点中自行定义路径规范。

如果需要匹配node_modules内的vue文件,需要使用packageName/path/to/vue-file-$1.vue形式的匹配规则,其中packageName为安装的包名,/path/to/vue-file-$1.vue为vue文件在包内的路径。

"easycom": {
  "autoscan": true,
  "custom": {
    "^uni-(.*)": "@/components/uni-$1.vue", // 匹配components目录内的vue文件
    "^vue-file-(.*)": "packageName/path/to/vue-file-$1.vue" // 匹配node_modules内的vue文件
  }
}

说明

  • easycom方式引入的组件无需在页面内import,也不需要在components内声明,即可在任意页面使用。
  • easycom方式引入组件不是全局引入,而是局部引入。例如在H5端只有加载相应页面才会加载使用的组件。
  • 在组件名完全一致的情况下,easycom引入的优先级低于手动引入(区分连字符形式与驼峰形式)。
  • 考虑到编译速度,直接在pages.json内修改easycom不会触发重新编译,需要改动页面内容触发。
  • easycom只处理vue组件,不处理小程序专用组件(如微信的wxml格式组件)。不处理后缀为.nvue的组件。因为nvue页面引入的组件也是.vue组件。可以参考uni ui,使用vue后缀,同时兼容nvue页面。
  • nvue页面里引用.vue后缀的组件,会按照nvue方式使用原生渲染,其中不支持的css会被忽略掉。这种情况同样支持easycom
  • vue 与 uvue 组件优先级,详见

注意这里作者遇到一个问题 如果你引入的组件文件包含package.json 比如MonoRepo项目中

并且配置了 exports 字段 对外其实是封闭的 ,导致 easycom 扫描不到组件建议配置

 "./*": "./src/*" 放开 exports 的限制

  "exports": {
    "./baseCss": "./src/assets/base.css",
    ".": "./src/index.js",
    "./*": "./src/*"
  }
}

npm安装 uni-ui

在 -项目中可以使用 npm 安装 uni-ui 库 ,或者直接在 HBuilderX 项目中使用 npm 。

注意 cli 项目默认是不编译 node_modules 下的组件的,导致条件编译等功能失效 ,导致组件异常 需要在根目录创建 vue.config.js 文件 ,增加 @dcloudio/uni-ui 包的编译即可正常

// 在根目录创建 vue.config.js 文件,并配置如下
module.exports = {
   transpileDependencies: ['@dcloudio/uni-ui']
}
// 如果是 vue3 + vite, 无需添加配置

准备 sass

vue-cli 项目请先安装 sass 及 sass-loader,如在 HBuliderX 中使用,可跳过此步。

  • 安装 sass
 npm i sass -D   或   yarn add sass -D  
  • 安装 sass-loader
npm i sass-loader@10.1.1 -D   或   yarn add sass-loader@10.1.1 -D

如果 node 版本小于 16 ,sass-loader 请使用低于 @11.0.0 的版本,sass-loader@11.0.0 不支持 vue@2.6.12  如果 node 版本大于 16 , sass-loader 建议使用 v8.x 版本

安装 uni-ui

npm i @dcloudio/uni-ui   或   yarn add @dcloudio/uni-ui

配置easycom

使用 npm 安装好 uni-ui 之后,需要配置 easycom 规则,让 npm 安装的组件支持 easycom

打开项目根目录下的 pages.json 并添加 easycom 节点:

// pages.json
{
	"easycom": {
		"autoscan": true,
		"custom": {
			// uni-ui 规则如下配置
			"^uni-(.*)": "@dcloudio/uni-ui/lib/uni-$1/uni-$1.vue"
		}
	},
	
	// 其他内容
	pages:[
		// ...
	]
}

在 template 中使用组件:

<uni-badge text="1"></uni-badge>
<uni-badge text="2" type="success" @click="bindClick"></uni-badge>
<uni-badge text="3" type="primary" :inverted="true"></uni-badge>

注意

uni-ui 现在只推荐使用 easycom ,如自己引用组件,可能会出现组件找不到的问题

使用 npm 安装的组件,默认情况下 babel-loader 会忽略所有 node_modules 中的文件 ,导致条件编译失效,需要通过配置 vue.config.js 解决:

// 在根目录创建 vue.config.js 文件,并配置如下
module.exports = {
   transpileDependencies: ['@dcloudio/uni-ui']
}
// 如果是 vue3 + vite, 无需添加配置

uni-ui 是uni-app内置组件的扩展。注意与web开发不同,uni-ui不包括基础组件,它是基础组件的补充。web开发中有的开发者习惯用一个ui库完成所有开发,但在uni-app体系中,推荐开发者首先使用性能更高的基础组件,然后按需引入必要的扩展组件。

uni-ui 不支持使用 Vue.use() 的方式安装

<think>好的,用户遇到了vue-cli-plugin-uni相关的模块构建失败问题,需要解决。首先,我需要分析可能的错误原因,并给出解决方案。根据提供的引用内容,特别是引用[1]、[2]、[4],可能与模块缺失、配置错误或代码问题有关。 首先,引用[1]提到找不到@dcloudio/vue-cli-plugin-hbuilderx模块,这可能是因为项目依赖未正确安装。用户可能需要重新安装依赖或更新相关包。引用[2]指出extract-text-webpack-plugin未配置导致的问题,可能需要检查webpack配置是否存在错误或缺少插件。引用[4]提到v-model绑定空值或属性传递空值导致的问题,这需要检查代码中的绑定是否正确。 接下来,用户的问题是关于vue-cli-plugin-uni的模块构建失败,需要具体分析。可能的原因包括依赖缺失、版本冲突、配置错误或代码中的语法问题。解决方案可能包括重新安装依赖,检查node_modules是否完整,更新或降级相关包的版本,检查webpack配置,以及审查代码中的绑定和标签闭合是否正确。 另外,引用[3]提到安装uni-ui时需要的依赖,如node-sass和sass-loader,这也可能影响构建过程。如果这些依赖未正确安装,可能导致构建失败,需要确保这些依赖已正确安装。 综合以上信息,解决方案应分步骤进行,包括检查依赖安装、清除缓存、更新或降级包版本、检查webpack配置、审查代码中的绑定问题,以及尝试重新初始化项目。需要将这些步骤清晰列出,确保用户能逐步排查问题。</think>### 解决 `vue-cli-plugin-uni` 模块构建失败问题 #### 1. **检查依赖安装** - **重新安装项目依赖**: 确保 `@dcloudio/vue-cli-plugin-uni` 和 `webpack-uni-app-loader` 已正确安装。 ```bash npm install @dcloudio/vue-cli-plugin-uni webpack-uni-app-loader --save-dev ``` - **验证 `node_modules` 完整性**: 删除 `node_modules` 和 `package-lock.json`,重新执行 `npm install`[^1]。 #### 2. **处理版本兼容性问题** - **升级或降级 `vue-cli-plugin-uni`**: 尝试固定版本安装(例如指定版本号),避免因最新版本与其他插件冲突: ```bash npm install @dcloudio/vue-cli-plugin-uni@2.0.0-31520210518001 --save-dev ``` - **检查 `webpack` 配置**: 确保 `webpack.dev.conf.js` 中未错误引用缺失插件(如 `extract-text-webpack-plugin`),若存在冗余配置需删除[^2]。 #### 3. **检查代码语法问题** - **审查 `v-model` 绑定与属性传递**: 若绑定的值为空字符串或父组件传递空属性,需设置默认值或条件渲染。例如: ```vue <!-- 错误示例 --> <child-component :prop="undefinedValue" /> <!-- 修复示例 --> <child-component :prop="value || &#39;&#39;" v-if="value" /> ``` - **验证标签闭合**: 确保所有组件标签正确闭合,避免因标签嵌套错误导致解析失败[^4]。 #### 4. **补充必要依赖** - 安装 `sass` 相关支持: ```bash npm install node-sass sass-loader -D ``` -使用 `uni-ui`,需安装其依赖: ```bash npm install uview-ui ``` #### 5. **尝试重建项目** - 若问题仍未解决,可尝试通过 `vue-cli` 重新初始化项目,再逐步迁移代码和配置[^3]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端 贾公子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值