uniapp使用命令创建页面

本文介绍了如何在package.json中定义一个命令,通过`addPage.ts`脚本在指定路径下创建新的NVue文件。脚本检查目标路径并自动创建目录和文件,如果文件夹或文件已存在则给出提示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package.js下创建命令

"scripts": {
    "add": "node ./auto/addPage.ts"
}

package.js同级目录创建auto/addPage.ts

addPage.ts代码如下

const fs = require('fs')
const path = require('path')
const targetPath = process.argv[2];// 要创建的目录地址和文件名
const args = targetPath.split('/');
const targetParent = args.slice(-2, -1)[0]; //创建路径的父文件夹
const targetName = args.slice(-1)[0]; //创建的文件名
const targetFileName = process.argv[3]; // 要创建的文件中文名
const root = process.argv[4]; // 要创建的文件中文名
let targetFullParentPath, targetFullPath;
if (root) {
  targetFullParentPath = `./src/${root}/` + targetParent; //完整的父文件夹路径
  targetFullPath = `./src/${root}/` + targetPath + '.nvue'; //完整的文件路径
} else {
  targetFullParentPath = './src/pages/' + targetParent; //完整的父文件夹路径
  targetFullPath = './src/pages/' + targetPath + '.nvue'; //完整的文件路径
}

/*检测指定目录下指定文件夹/文件是否存在*/
let isExist = function (path) {
  return fs.existsSync(path);
}

const newPages = {
  name: targetName,
  title: targetFileName,
  path: targetFullParentPath
}

!user_pages.includes(i.name));

// 添加新路由
function addPages(pages) {
  if (isExist(targetFullParentPath) && isExist(targetFullPath)) { //存在文件夹
    console.log("已存在文件夹" + targetParent+ "且存在文件" + targetName)
  } else {
    const { name, title, path } = pages;
    const dirPath = `${path}`;
    if (!isExist(targetFullParentPath)) {
       fs.mkdirSync(dirPath);
    }
    const filePath = `${dirPath}/${name}.nvue`;
    const createStream = fs.createWriteStream(filePath);
    const template = `<script setup lang="ts" ></script>
    <template>
      <view>${title}</view>
    </template>
    <style scoped></style>
    `;
    createStream.write(template);
    createStream.end();
    console.log('\x1B[34m', `pages ${name} created successfully.`);
  }
}

addPages(newPages);

至此就可以愉快的使用命令创建页面啦

### 如何在 UniApp使用 Vue 以命令式方式封装组件 #### 创建基础结构 为了创建一个命令式的组件,在项目中定义一个新的 JavaScript 文件作为组件逻辑的容器。假设要创建名为 `MessageComponent.js` 的文件。 ```javascript // MessageComponent.js export default function (Vue, options) { const messageConstructor = Vue.extend({ data() { return { msg: '' } }, methods: { setMessage(message) { this.msg = message; } }, template: `<div>{{msg}}</div>` }); let instance; return { show(message) { if (!instance || !instance.$el.parentNode) { instance = new messageConstructor().$mount(); document.body.appendChild(instance.$el); } instance.setMessage(message); setTimeout(() => { if (instance && instance.$el.parentNode === document.body) { document.body.removeChild(instance.$el); instance = null; // 清除实例以便下次调用show方法时重新挂载 } }, 3000); // 自动关闭消息框的时间设置为3秒 } }; } ``` 此代码片段展示了如何通过扩展 Vue 构造器来构建自定义的消息显示功能[^2]。 #### 注册全局方法并初始化插件 为了让上述命令式组件能够在整个应用范围内被访问到,需将其注册成全局的方法: ```javascript import Message from './path/to/MessageComponent'; const install = (Vue, opts = {}) => { Vue.prototype.$message = Message(Vue, opts); }; if (typeof window !== 'undefined' && window.Vue) { window.Vue.use(install); } export default install; ``` 这段脚本实现了将 `$message` 方法注入至 Vue 实例原型链上,从而允许任何地方都能方便地调用它。 #### 使用命令式组件 最后一步是在页面或其他组件内部实际运用这个新建立的功能: ```html <template> <view class="example"> <!-- 页面其他部分 --> <button type="primary" @click="sendMessage">发送消息</button> </view> </template> <script> export default { name: "ExamplePage", methods: { sendMessage() { this.$message.show('这是一个测试消息'); } } }; </script> ``` 以上就是完整的 uniapp vue 命令式 组件 封装 示例教程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值