feat: 打通 HBuilderX CLI 构建 + 修复文章闭环静态盲区
构建: - 新增 tools/build.js:junction HBuilderX 工具链,CLI 构建 h5/mp-weixin - vue 指向补丁版 @dcloudio/uni-h5-vue(官方 npm vue 不导出 isInSSRComponentSetup) - 设 HX_APP_ROOT 避免退化成 H5 空壳产物;产物完整性校验 校验工具: - 新增 check-cloud-methods.js:acorn 解析云对象方法,比对 94 处调用点 - 新增 check-android-contract.js:Kotlin 侧云对象契约校验 - audit-project.js 修 downloadFile 误报(注释未剥离);tools/ 排除出扫描 - package.json 声明此前隐式依赖的 acorn 功能: - 补 uni-cms-articles.getPublishedArticles(安卓端依赖但此前不存在) - 修 u-parse <audio> 引用已移除组件导致 H5 构建失败
This commit is contained in:
@@ -45,8 +45,9 @@ export default {
|
||||
this.className
|
||||
]
|
||||
},
|
||||
styles () {
|
||||
let style = this.data.data.style
|
||||
styles () {
|
||||
let style = this.data?.data?.style || ''
|
||||
|
||||
|
||||
if (this.width) {
|
||||
style += `;width:${this.width}px`
|
||||
@@ -61,14 +62,16 @@ export default {
|
||||
this.loadImagePath()
|
||||
},
|
||||
methods: {
|
||||
async loadImagePath () {
|
||||
const parseImages = await parseImageUrl({
|
||||
insert: {image: this.data.data.value},
|
||||
attributes: this.data.data.attributes,
|
||||
}, "editor")
|
||||
async loadImagePath () {
|
||||
const value = this.data?.data?.value || ''
|
||||
if (!value) return
|
||||
const parseImages = await parseImageUrl({
|
||||
insert: {image: value},
|
||||
attributes: this.data?.data?.attributes || {},
|
||||
}, "editor")
|
||||
|
||||
this.imagePath = parseImages[0].src
|
||||
},
|
||||
this.imagePath = parseImages?.[0]?.src || ''
|
||||
},
|
||||
imagePreview () {
|
||||
uni.$emit('imagePreview', this.data.data.value)
|
||||
},
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<view class="content" :style="color">
|
||||
<template v-for="op in content">
|
||||
<view class="content" :style="{ color }">
|
||||
<template v-for="(op, index) in content" :key="index">
|
||||
<render-text
|
||||
v-if="op.type === 'paragraph'"
|
||||
:data="op.data"
|
||||
@@ -8,7 +8,7 @@
|
||||
:style="op.style"
|
||||
></render-text>
|
||||
<render-image
|
||||
v-else-if="op.type === 'image' && op.data.length > 0"
|
||||
v-else-if="op.type === 'image' && Array.isArray(op.data) && op.data.length > 0"
|
||||
:data="op.data[0]"
|
||||
:className="op.class"
|
||||
:style="op.style"
|
||||
@@ -83,16 +83,9 @@ export default {
|
||||
mounted() {
|
||||
this.initImage()
|
||||
},
|
||||
// #ifdef VUE2
|
||||
beforeDestroy() {
|
||||
uni.$off('imagePreview')
|
||||
},
|
||||
// #endif
|
||||
// #ifdef VUE3
|
||||
beforeUnmount () {
|
||||
uni.$off('imagePreview')
|
||||
},
|
||||
// #endif
|
||||
beforeUnmount () {
|
||||
uni.$off('imagePreview', this.imagePreview)
|
||||
},
|
||||
methods: {
|
||||
// 初始化图片
|
||||
async initImage() {
|
||||
@@ -104,7 +97,8 @@ export default {
|
||||
}
|
||||
|
||||
// 监听图片预览
|
||||
uni.$on('imagePreview', this.imagePreview)
|
||||
uni.$off('imagePreview', this.imagePreview)
|
||||
uni.$on('imagePreview', this.imagePreview)
|
||||
},
|
||||
// 点击图片预览
|
||||
imagePreview(src) {
|
||||
|
||||
@@ -1,8 +1,11 @@
|
||||
<template>
|
||||
<view :class="['list', data.type]">
|
||||
<view class="list-item" v-for="(item, index) in data.items">
|
||||
<text class="dot">{{data.type === 'ordered' ? `${index + 1}.` : '•'}}</text>
|
||||
<render-text :data="item.data" reset class="reset-default"></render-text>
|
||||
<view class="list-item" v-for="(item, index) in (data.items || [])" :key="index">
|
||||
<text class="dot">{{data.type === 'ordered' ? `${index + 1}.` : '•'}}</text>
|
||||
<view class="item-content">
|
||||
<render-text :data="item.data || []" reset class="reset-default"></render-text>
|
||||
<render-list v-if="item.children" :data="item.children"></render-list>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
<view class="video">
|
||||
<video
|
||||
class="v"
|
||||
:src="data.attributes.src"
|
||||
:poster="data.attributes.poster"
|
||||
:src="data.value || data.attributes?.src || ''"
|
||||
:poster="data.attributes?.poster || ''"
|
||||
></video>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
Reference in New Issue
Block a user