uni-app 之创建和发布uni-modules插件
<h1>目录</h1><ul>
<li>背景</li>
<li>前提条件</li>
<li>步骤
<ul>
<li>新建步骤uni-modules插件</li>
<li>编写插件内容</li>
<li>编写插件文档</li>
<li>发布到插件市场</li>
</ul>
</li>
<li>参考网址</li>
</ul>
<h1>背景</h1>
<p>最近在用uni-app做项目,根据项目的需要,用上了很多插件。真不错,可以站在巨人肩膀上摘苹果。</p>
<p>不过,在实际应用的时候,会有一些不尽人意。比如,在用到uni-search-bar插件时,发现取消按钮不能改变颜色。有的时候,页面上显得不那么符合期待。</p>
<p align="center"><img src="https://img2020.cnblogs.com/blog/1602649/202107/1602649-20210713183607824-1743956849.png"> </p>
<p>我的期待自然是将“取消”按钮的文字改为白色。</p>
<p align="center"><img src="https://img2020.cnblogs.com/blog/1602649/202107/1602649-20210713183607846-156683463.png"></p>
<blockquote>
<p>题外话:本来本人对美也没有什么的追求(比如,我就告诉我的女朋友,我喜欢上她,绝对与她的颜值无关,然后,她就生气了,为什么?)。如果是自己用的系统,绝对略过这个问题。然后,本人一个小团队,没有美工、没有前端。做项目时,领导告诉我可以不管UI。然后,在阶段性汇报的时候,我就被批评的体无完肤,从能力到个人的远见,到为人处世……后来、后来,才听出画外音:你做的东西太丑了,看得我心情不好,所以,看你也不顺眼。</p>
<p>也许UI不重要,但是不重要的事情都做不好,怎么做重要的事?(⊙o⊙)…,似乎有道理。</p>
<p>所以,虽然本人审美不行。为了领导和自己的身体,不动怒,不委屈,还是尽量做好吧。</p>
</blockquote>
<p>所以,根据我的实际情况。我找了半天,很多真没有找到合适的。于是,我想着自己开发,初次看官方文档,我似乎理解错了(https://nativesupport.dcloud.net.cn/NativePlugin/README)╮(╯▽╰)╭</p>
<p>以为要额外安装Android或IOS的开发环境,还要会……这简直是一个系列啊,哪有时间?</p>
<p>好在,时间总会有的。(这里是本人发布的搜索栏插件:https://ext.dcloud.net.cn/plugin?id=5617)。</p>
<h1>前提条件</h1>
<ul>
<li>已安装HBuider X</li>
<li>用于测试的uni-app 项目</li>
<li>运行或测试的环境(这里使用了微信开发者工具和手机)</li>
</ul>
<h1>步骤</h1>
<h2>新建uni-modules插件</h2>
<p>1. 右击项目的uni_modules文件夹,点击uni-modules插件。</p>
<p style="text-align: center"><img src="https://img2020.cnblogs.com/blog/1602649/202107/1602649-20210713183607849-1406266361.png"></p>
<p>2. 弹出对话框,填写插件id和地址和分类,点击【创建】。</p>
<p><img src="https://img2020.cnblogs.com/blog/1602649/202107/1602649-20210713183607857-921899690.png"></p>
<p>3. 这里创建了本地uni_modules插件文件夹。</p>
<p align="center"> </p>
<p align="center"><img src="https://img2020.cnblogs.com/blog/1602649/202107/1602649-20210713183607832-2131378552.png"></p>
<p>uni-modules的目录结构请参考https://uniapp.dcloud.io/uni_modules?id=%e7%9b%ae%e5%bd%95%e7%bb%93%e6%9e%84。</p>
<h2>编写插件内容</h2>
<p>现在,可以在插件的components目录下编辑插件内容了。这里luyj-search-bar.vue直接复制了插件https://ext.dcloud.net.cn/plugin?id=866的uni-search-bar文件夹的内容,然后做了修改。具体代码如下:</p>
<div class="cnblogs_code"><img src="http://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif"><img id="code_img_opened_2103cc10-f23a-47f0-9851-3bee1599ec52" class="code_img_opened lazyload" style="display: none" data-src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif">
<div id="cnblogs_code_open_2103cc10-f23a-47f0-9851-3bee1599ec52" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> <template>
<span style="color: rgba(0, 128, 128, 1)">2</span> <view class="uni-searchbar">
<span style="color: rgba(0, 128, 128, 1)">3</span> <view :style="{borderRadius:radius+'px',backgroundColor: bgColor}" class="uni-searchbar__box" @click="searchClick">
<span style="color: rgba(0, 128, 128, 1)">4</span> <view class="uni-searchbar__box-icon-search">
<span style="color: rgba(0, 128, 128, 1)">5</span> <slot name="searchIcon">
<span style="color: rgba(0, 128, 128, 1)">6</span> <uni-icons color="#999999" size="18" type="search" />
<span style="color: rgba(0, 128, 128, 1)">7</span> </slot>
<span style="color: rgba(0, 128, 128, 1)">8</span> </view>
<span style="color: rgba(0, 128, 128, 1)">9</span> <input v-<span style="color: rgba(0, 0, 255, 1)">if</span>="show || searchVal" :focus="showSync" :placeholder="placeholder" :maxlength="maxlength" class="uni-searchbar__box-search-input"
<span style="color: rgba(0, 128, 128, 1)"> 10</span> confirm-type="search" type="text" v-model="searchVal" @confirm="confirm" @blur="blur" @focus="emitFocus" />
<span style="color: rgba(0, 128, 128, 1)"> 11</span> <text v-<span style="color: rgba(0, 0, 255, 1)">else</span> class="uni-searchbar__text-placeholder">{{ placeholder }}</text>
<span style="color: rgba(0, 128, 128, 1)"> 12</span> <view v-<span style="color: rgba(0, 0, 255, 1)">if</span>="show && (clearButton==='always'||clearButton==='auto'&&searchVal!=='')" class="uni-searchbar__box-icon-clear"
<span style="color: rgba(0, 128, 128, 1)"> 13</span> @click="clear">
<span style="color: rgba(0, 128, 128, 1)"> 14</span> <slot name="clearIcon">
<span style="color: rgba(0, 128, 128, 1)"> 15</span> <uni-icons color="#c0c4cc" size="15" type="clear" />
<span style="color: rgba(0, 128, 128, 1)"> 16</span> </slot>
<span style="color: rgba(0, 128, 128, 1)"> 17</span> </view>
<span style="color: rgba(0, 128, 128, 1)"> 18</span> </view>
<span style="color: rgba(0, 128, 128, 1)"> 19</span> <text @click="cancel" class="uni-searchbar__cancel" v-<span style="color: rgba(0, 0, 255, 1)">if</span>="cancelButton ==='always' || show && cancelButton ==='auto'"
<span style="color: rgba(0, 128, 128, 1)"> 20</span> :style="{color: cancelColor}">{{cancelText}}</text>
<span style="color: rgba(0, 128, 128, 1)"> 21</span> </view>
<span style="color: rgba(0, 128, 128, 1)"> 22</span> </template>
<span style="color: rgba(0, 128, 128, 1)"> 23</span>
<span style="color: rgba(0, 128, 128, 1)"> 24</span> <script>
<span style="color: rgba(0, 128, 128, 1)"> 25</span> <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)">*
</span><span style="color: rgba(0, 128, 128, 1)"> 26</span> <span style="color: rgba(0, 128, 0, 1)"> * SearchBar 搜索栏
</span><span style="color: rgba(0, 128, 128, 1)"> 27</span> <span style="color: rgba(0, 128, 0, 1)"> * @description 搜索栏组件,通常用于搜索商品、文章等
</span><span style="color: rgba(0, 128, 128, 1)"> 28</span> <span style="color: rgba(0, 128, 0, 1)"> * @tutorial https://ext.dcloud.net.cn/plugin?id=5617
</span><span style="color: rgba(0, 128, 128, 1)"> 29</span> <span style="color: rgba(0, 128, 0, 1)"> * @property {Number} radius 搜索栏圆角
</span><span style="color: rgba(0, 128, 128, 1)"> 30</span> <span style="color: rgba(0, 128, 0, 1)"> * @property {Number} maxlength 输入最大长度
</span><span style="color: rgba(0, 128, 128, 1)"> 31</span> <span style="color: rgba(0, 128, 0, 1)"> * @property {String} placeholder 搜索栏Placeholder
</span><span style="color: rgba(0, 128, 128, 1)"> 32</span> <span style="color: rgba(0, 128, 0, 1)"> * @property {String} clearButton = 是否显示清除按钮
</span><span style="color: rgba(0, 128, 128, 1)"> 33</span> <span style="color: rgba(0, 128, 0, 1)"> * @value always 一直显示
</span><span style="color: rgba(0, 128, 128, 1)"> 34</span> <span style="color: rgba(0, 128, 0, 1)"> * @value auto 输入框不为空时显示
</span><span style="color: rgba(0, 128, 128, 1)"> 35</span> <span style="color: rgba(0, 128, 0, 1)"> * @value none 一直不显示
</span><span style="color: rgba(0, 128, 128, 1)"> 36</span> <span style="color: rgba(0, 128, 0, 1)"> * @property {String} cancelButton = 是否显示取消按钮
</span><span style="color: rgba(0, 128, 128, 1)"> 37</span> <span style="color: rgba(0, 128, 0, 1)"> * @value always 一直显示
</span><span style="color: rgba(0, 128, 128, 1)"> 38</span> <span style="color: rgba(0, 128, 0, 1)"> * @value auto 输入框不为空时显示
</span><span style="color: rgba(0, 128, 128, 1)"> 39</span> <span style="color: rgba(0, 128, 0, 1)"> * @value none 一直不显示
</span><span style="color: rgba(0, 128, 128, 1)"> 40</span> <span style="color: rgba(0, 128, 0, 1)"> * @property {String} cancelText 取消按钮的文字
</span><span style="color: rgba(0, 128, 128, 1)"> 41</span> <span style="color: rgba(0, 128, 0, 1)"> * @property {String} cancelColor 取消按钮的颜色
</span><span style="color: rgba(0, 128, 128, 1)"> 42</span> <span style="color: rgba(0, 128, 0, 1)"> * @property {String} bgColor 输入框背景颜色
</span><span style="color: rgba(0, 128, 128, 1)"> 43</span> <span style="color: rgba(0, 128, 0, 1)"> * @property {Boolean} focus 是否自动聚焦
</span><span style="color: rgba(0, 128, 128, 1)"> 44</span> <span style="color: rgba(0, 128, 0, 1)"> * @event {Function} confirm uniSearchBar 的输入框 confirm 事件,返回参数为uniSearchBar的value,e={value:Number}
</span><span style="color: rgba(0, 128, 128, 1)"> 45</span> <span style="color: rgba(0, 128, 0, 1)"> * @event {Function} input uniSearchBar 的 value 改变时触发事件,返回参数为uniSearchBar的value,e=value
</span><span style="color: rgba(0, 128, 128, 1)"> 46</span> <span style="color: rgba(0, 128, 0, 1)"> * @event {Function} cancel 点击取消按钮时触发事件,返回参数为uniSearchBar的value,e={value:Number}
</span><span style="color: rgba(0, 128, 128, 1)"> 47</span> <span style="color: rgba(0, 128, 0, 1)"> * @event {Function} clear 点击清除按钮时触发事件,返回参数为uniSearchBar的value,e={value:Number}
</span><span style="color: rgba(0, 128, 128, 1)"> 48</span> <span style="color: rgba(0, 128, 0, 1)"> * @event {Function} blur input失去焦点时触发事件,返回参数为uniSearchBar的value,e={value:Number}
</span><span style="color: rgba(0, 128, 128, 1)"> 49</span> <span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 128, 128, 1)"> 50</span>
<span style="color: rgba(0, 128, 128, 1)"> 51</span> export <span style="color: rgba(0, 0, 255, 1)">default</span><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 128, 128, 1)"> 52</span> name: "LuyjSearchBar"<span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 128, 1)"> 53</span> <span style="color: rgba(0, 0, 0, 1)"> props: {
</span><span style="color: rgba(0, 128, 128, 1)"> 54</span> <span style="color: rgba(0, 0, 0, 1)"> placeholder: {
</span><span style="color: rgba(0, 128, 128, 1)"> 55</span> <span style="color: rgba(0, 0, 0, 1)"> type: String,
</span><span style="color: rgba(0, 128, 128, 1)"> 56</span> <span style="color: rgba(0, 0, 255, 1)">default</span>: "请输入搜索内容"
<span style="color: rgba(0, 128, 128, 1)"> 57</span> <span style="color: rgba(0, 0, 0, 1)"> },
</span><span style="color: rgba(0, 128, 128, 1)"> 58</span> <span style="color: rgba(0, 0, 0, 1)"> radius: {
</span><span style="color: rgba(0, 128, 128, 1)"> 59</span> <span style="color: rgba(0, 0, 0, 1)"> type: ,
</span><span style="color: rgba(0, 128, 128, 1)"> 60</span> <span style="color: rgba(0, 0, 255, 1)">default</span>: 5
<span style="color: rgba(0, 128, 128, 1)"> 61</span> <span style="color: rgba(0, 0, 0, 1)"> },
</span><span style="color: rgba(0, 128, 128, 1)"> 62</span> <span style="color: rgba(0, 0, 0, 1)"> clearButton: {
</span><span style="color: rgba(0, 128, 128, 1)"> 63</span> <span style="color: rgba(0, 0, 0, 1)"> type: String,
</span><span style="color: rgba(0, 128, 128, 1)"> 64</span> <span style="color: rgba(0, 0, 255, 1)">default</span>: "auto"
<span style="color: rgba(0, 128, 128, 1)"> 65</span> <span style="color: rgba(0, 0, 0, 1)"> },
</span><span style="color: rgba(0, 128, 128, 1)"> 66</span> <span style="color: rgba(0, 0, 0, 1)"> cancelButton: {
</span><span style="color: rgba(0, 128, 128, 1)"> 67</span> <span style="color: rgba(0, 0, 0, 1)"> type: String,
</span><span style="color: rgba(0, 128, 128, 1)"> 68</span> <span style="color: rgba(0, 0, 255, 1)">default</span>: "auto"
<span style="color: rgba(0, 128, 128, 1)"> 69</span> <span style="color: rgba(0, 0, 0, 1)"> },
</span><span style="color: rgba(0, 128, 128, 1)"> 70</span> <span style="color: rgba(0, 0, 0, 1)"> cancelText: {
</span><span style="color: rgba(0, 128, 128, 1)"> 71</span> <span style="color: rgba(0, 0, 0, 1)"> type: String,
</span><span style="color: rgba(0, 128, 128, 1)"> 72</span> <span style="color: rgba(0, 0, 255, 1)">default</span>: '取消'
<span style="color: rgba(0, 128, 128, 1)"> 73</span> <span style="color: rgba(0, 0, 0, 1)"> },
</span><span style="color: rgba(0, 128, 128, 1)"> 74</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 取消按钮的颜色</span>
<span style="color: rgba(0, 128, 128, 1)"> 75</span> <span style="color: rgba(0, 0, 0, 1)"> cancelColor: {
</span><span style="color: rgba(0, 128, 128, 1)"> 76</span> <span style="color: rgba(0, 0, 0, 1)"> type: String,
</span><span style="color: rgba(0, 128, 128, 1)"> 77</span> <span style="color: rgba(0, 0, 255, 1)">default</span>: "#333333"
<span style="color: rgba(0, 128, 128, 1)"> 78</span> <span style="color: rgba(0, 0, 0, 1)"> },
</span><span style="color: rgba(0, 128, 128, 1)"> 79</span> <span style="color: rgba(0, 0, 0, 1)"> bgColor: {
</span><span style="color: rgba(0, 128, 128, 1)"> 80</span> <span style="color: rgba(0, 0, 0, 1)"> type: String,
</span><span style="color: rgba(0, 128, 128, 1)"> 81</span> <span style="color: rgba(0, 0, 255, 1)">default</span>: "#F8F8F8"
<span style="color: rgba(0, 128, 128, 1)"> 82</span> <span style="color: rgba(0, 0, 0, 1)"> },
</span><span style="color: rgba(0, 128, 128, 1)"> 83</span> <span style="color: rgba(0, 0, 0, 1)"> maxlength: {
</span><span style="color: rgba(0, 128, 128, 1)"> 84</span> <span style="color: rgba(0, 0, 0, 1)"> type: ,
</span><span style="color: rgba(0, 128, 128, 1)"> 85</span> <span style="color: rgba(0, 0, 255, 1)">default</span>: 100
<span style="color: rgba(0, 128, 128, 1)"> 86</span> <span style="color: rgba(0, 0, 0, 1)"> },
</span><span style="color: rgba(0, 128, 128, 1)"> 87</span> <span style="color: rgba(0, 0, 0, 1)"> value: {
</span><span style="color: rgba(0, 128, 128, 1)"> 88</span> <span style="color: rgba(0, 0, 0, 1)"> type: ,
</span><span style="color: rgba(0, 128, 128, 1)"> 89</span> <span style="color: rgba(0, 0, 255, 1)">default</span>: ""
<span style="color: rgba(0, 128, 128, 1)"> 90</span> <span style="color: rgba(0, 0, 0, 1)"> },
</span><span style="color: rgba(0, 128, 128, 1)"> 91</span> <span style="color: rgba(0, 0, 0, 1)"> focus: {
</span><span style="color: rgba(0, 128, 128, 1)"> 92</span> <span style="color: rgba(0, 0, 0, 1)"> type: Boolean,
</span><span style="color: rgba(0, 128, 128, 1)"> 93</span> <span style="color: rgba(0, 0, 255, 1)">default</span>: <span style="color: rgba(0, 0, 255, 1)">false</span>
<span style="color: rgba(0, 128, 128, 1)"> 94</span> <span style="color: rgba(0, 0, 0, 1)"> }
</span><span style="color: rgba(0, 128, 128, 1)"> 95</span> <span style="color: rgba(0, 0, 0, 1)"> },
</span><span style="color: rgba(0, 128, 128, 1)"> 96</span> <span style="color: rgba(0, 0, 0, 1)"> data() {
</span><span style="color: rgba(0, 128, 128, 1)"> 97</span> <span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 128, 128, 1)"> 98</span> show: <span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 128, 1)"> 99</span> showSync: <span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 128, 1)">100</span> searchVal: ''
<span style="color: rgba(0, 128, 128, 1)">101</span> <span style="color: rgba(0, 0, 0, 1)"> }
</span><span style="color: rgba(0, 128, 128, 1)">102</span> <span style="color: rgba(0, 0, 0, 1)"> },
</span><span style="color: rgba(0, 128, 128, 1)">103</span> <span style="color: rgba(0, 0, 0, 1)"> watch: {
</span><span style="color: rgba(0, 128, 128, 1)">104</span> <span style="color: rgba(0, 0, 0, 1)"> value: {
</span><span style="color: rgba(0, 128, 128, 1)">105</span> immediate: <span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 128, 1)">106</span> <span style="color: rgba(0, 0, 0, 1)"> handler(newVal) {
</span><span style="color: rgba(0, 128, 128, 1)">107</span> <span style="color: rgba(0, 0, 255, 1)">this</span>.searchVal =<span style="color: rgba(0, 0, 0, 1)"> newVal
</span><span style="color: rgba(0, 128, 128, 1)">108</span> <span style="color: rgba(0, 0, 255, 1)">if</span><span style="color: rgba(0, 0, 0, 1)"> (newVal) {
</span><span style="color: rgba(0, 128, 128, 1)">109</span> <span style="color: rgba(0, 0, 255, 1)">this</span>.show = <span style="color: rgba(0, 0, 255, 1)">true</span>
<span style="color: rgba(0, 128, 128, 1)">110</span> <span style="color: rgba(0, 0, 0, 1)"> }
</span><span style="color: rgba(0, 128, 128, 1)">111</span> <span style="color: rgba(0, 0, 0, 1)"> }
</span><span style="color: rgba(0, 128, 128, 1)">112</span> <span style="color: rgba(0, 0, 0, 1)"> },
</span><span style="color: rgba(0, 128, 128, 1)">113</span> <span style="color: rgba(0, 0, 0, 1)"> focus: {
</span><span style="color: rgba(0, 128, 128, 1)">114</span> immediate: <span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 128, 1)">115</span> <span style="color: rgba(0, 0, 0, 1)"> handler(newVal) {
</span><span style="color: rgba(0, 128, 128, 1)">116</span> <span style="color: rgba(0, 0, 255, 1)">if</span><span style="color: rgba(0, 0, 0, 1)"> (newVal) {
</span><span style="color: rgba(0, 128, 128, 1)">117</span> <span style="color: rgba(0, 0, 255, 1)">this</span>.show = <span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">118</span> <span style="color: rgba(0, 0, 255, 1)">this</span>.$nextTick(() =><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 128, 128, 1)">119</span> <span style="color: rgba(0, 0, 255, 1)">this</span>.showSync = <span style="color: rgba(0, 0, 255, 1)">true</span>
<span style="color: rgba(0, 128, 128, 1)">120</span> <span style="color: rgba(0, 0, 0, 1)"> })
</span><span style="color: rgba(0, 128, 128, 1)">121</span> <span style="color: rgba(0, 0, 0, 1)"> }
</span><span style="color: rgba(0, 128, 128, 1)">122</span> <span style="color: rgba(0, 0, 0, 1)"> }
</span><span style="color: rgba(0, 128, 128, 1)">123</span> <span style="color: rgba(0, 0, 0, 1)"> },
</span><span style="color: rgba(0, 128, 128, 1)">124</span> <span style="color: rgba(0, 0, 0, 1)"> searchVal(newVal, oldVal) {
</span><span style="color: rgba(0, 128, 128, 1)">125</span> <span style="color: rgba(0, 0, 255, 1)">this</span>.$emit("input"<span style="color: rgba(0, 0, 0, 1)">, newVal)
</span><span style="color: rgba(0, 128, 128, 1)">126</span> <span style="color: rgba(0, 0, 0, 1)"> }
</span><span style="color: rgba(0, 128, 128, 1)">127</span> <span style="color: rgba(0, 0, 0, 1)"> },
</span><span style="color: rgba(0, 128, 128, 1)">128</span> <span style="color: rgba(0, 0, 0, 1)"> methods: {
</span><span style="color: rgba(0, 128, 128, 1)">129</span> <span style="color: rgba(0, 0, 0, 1)"> searchClick() {
</span><span style="color: rgba(0, 128, 128, 1)">130</span> <span style="color: rgba(0, 0, 255, 1)">if</span> (<span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.show) {
</span><span style="color: rgba(0, 128, 128, 1)">131</span> <span style="color: rgba(0, 0, 255, 1)">return</span>
<span style="color: rgba(0, 128, 128, 1)">132</span> <span style="color: rgba(0, 0, 0, 1)"> }
</span><span style="color: rgba(0, 128, 128, 1)">133</span> <span style="color: rgba(0, 0, 255, 1)">this</span>.show = <span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">134</span> <span style="color: rgba(0, 0, 255, 1)">this</span>.$nextTick(() =><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 128, 128, 1)">135</span> <span style="color: rgba(0, 0, 255, 1)">this</span>.showSync = <span style="color: rgba(0, 0, 255, 1)">true</span>
<span style="color: rgba(0, 128, 128, 1)">136</span> <span style="color: rgba(0, 0, 0, 1)"> })
</span><span style="color: rgba(0, 128, 128, 1)">137</span> <span style="color: rgba(0, 0, 0, 1)"> },
</span><span style="color: rgba(0, 128, 128, 1)">138</span> <span style="color: rgba(0, 0, 0, 1)"> clear() {
</span><span style="color: rgba(0, 128, 128, 1)">139</span> <span style="color: rgba(0, 0, 255, 1)">this</span>.$emit("clear"<span style="color: rgba(0, 0, 0, 1)">, {
</span><span style="color: rgba(0, 128, 128, 1)">140</span> value: <span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.searchVal
</span><span style="color: rgba(0, 128, 128, 1)">141</span> <span style="color: rgba(0, 0, 0, 1)"> })
</span><span style="color: rgba(0, 128, 128, 1)">142</span> <span style="color: rgba(0, 0, 255, 1)">this</span>.searchVal = ""
<span style="color: rgba(0, 128, 128, 1)">143</span> <span style="color: rgba(0, 0, 0, 1)"> },
</span><span style="color: rgba(0, 128, 128, 1)">144</span> <span style="color: rgba(0, 0, 0, 1)"> cancel() {
</span><span style="color: rgba(0, 128, 128, 1)">145</span> <span style="color: rgba(0, 0, 255, 1)">this</span>.$emit("cancel"<span style="color: rgba(0, 0, 0, 1)">, {
</span><span style="color: rgba(0, 128, 128, 1)">146</span> value: <span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.searchVal
</span><span style="color: rgba(0, 128, 128, 1)">147</span> <span style="color: rgba(0, 0, 0, 1)"> });
</span><span style="color: rgba(0, 128, 128, 1)">148</span> <span style="color: rgba(0, 0, 255, 1)">this</span>.searchVal = ""
<span style="color: rgba(0, 128, 128, 1)">149</span> <span style="color: rgba(0, 0, 255, 1)">this</span>.show = <span style="color: rgba(0, 0, 255, 1)">false</span>
<span style="color: rgba(0, 128, 128, 1)">150</span> <span style="color: rgba(0, 0, 255, 1)">this</span>.showSync = <span style="color: rgba(0, 0, 255, 1)">false</span>
<span style="color: rgba(0, 128, 128, 1)">151</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> #ifndef APP-PLUS</span>
<span style="color: rgba(0, 128, 128, 1)">152</span> <span style="color: rgba(0, 0, 0, 1)"> uni.hideKeyboard()
</span><span style="color: rgba(0, 128, 128, 1)">153</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> #endif</span>
<span style="color: rgba(0, 128, 128, 1)">154</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> #ifdef APP-PLUS</span>
<span style="color: rgba(0, 128, 128, 1)">155</span> <span style="color: rgba(0, 0, 0, 1)"> plus.key.hideSoftKeybord()
</span><span style="color: rgba(0, 128, 128, 1)">156</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> #endif</span>
<span style="color: rgba(0, 128, 128, 1)">157</span> <span style="color: rgba(0, 0, 0, 1)"> },
</span><span style="color: rgba(0, 128, 128, 1)">158</span> <span style="color: rgba(0, 0, 0, 1)"> confirm() {
</span><span style="color: rgba(0, 128, 128, 1)">159</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> #ifndef APP-PLUS</span>
<span style="color: rgba(0, 128, 128, 1)">160</span> <span style="color: rgba(0, 0, 0, 1)"> uni.hideKeyboard();
</span><span style="color: rgba(0, 128, 128, 1)">161</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> #endif</span>
<span style="color: rgba(0, 128, 128, 1)">162</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> #ifdef APP-PLUS</span>
<span style="color: rgba(0, 128, 128, 1)">163</span> <span style="color: rgba(0, 0, 0, 1)"> plus.key.hideSoftKeybord()
</span><span style="color: rgba(0, 128, 128, 1)">164</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> #endif</span>
<span style="color: rgba(0, 128, 128, 1)">165</span> <span style="color: rgba(0, 0, 255, 1)">this</span>.$emit("confirm"<span style="color: rgba(0, 0, 0, 1)">, {
</span><span style="color: rgba(0, 128, 128, 1)">166</span> value: <span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.searchVal
</span><span style="color: rgba(0, 128, 128, 1)">167</span> <span style="color: rgba(0, 0, 0, 1)"> })
</span><span style="color: rgba(0, 128, 128, 1)">168</span> <span style="color: rgba(0, 0, 0, 1)"> },
</span><span style="color: rgba(0, 128, 128, 1)">169</span> <span style="color: rgba(0, 0, 0, 1)"> blur() {
</span><span style="color: rgba(0, 128, 128, 1)">170</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> #ifndef APP-PLUS</span>
<span style="color: rgba(0, 128, 128, 1)">171</span> <span style="color: rgba(0, 0, 0, 1)"> uni.hideKeyboard();
</span><span style="color: rgba(0, 128, 128, 1)">172</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> #endif</span>
<span style="color: rgba(0, 128, 128, 1)">173</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> #ifdef APP-PLUS</span>
<span style="color: rgba(0, 128, 128, 1)">174</span> <span style="color: rgba(0, 0, 0, 1)"> plus.key.hideSoftKeybord()
</span><span style="color: rgba(0, 128, 128, 1)">175</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> #endif</span>
<span style="color: rgba(0, 128, 128, 1)">176</span> <span style="color: rgba(0, 0, 255, 1)">this</span>.$emit("blur"<span style="color: rgba(0, 0, 0, 1)">, {
</span><span style="color: rgba(0, 128, 128, 1)">177</span> value: <span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.searchVal
</span><span style="color: rgba(0, 128, 128, 1)">178</span> <span style="color: rgba(0, 0, 0, 1)"> })
</span><span style="color: rgba(0, 128, 128, 1)">179</span> <span style="color: rgba(0, 0, 0, 1)"> },
</span><span style="color: rgba(0, 128, 128, 1)">180</span> <span style="color: rgba(0, 0, 0, 1)"> emitFocus(e) {
</span><span style="color: rgba(0, 128, 128, 1)">181</span> <span style="color: rgba(0, 0, 255, 1)">this</span>.$emit("focus"<span style="color: rgba(0, 0, 0, 1)">, e.detail)
</span><span style="color: rgba(0, 128, 128, 1)">182</span> <span style="color: rgba(0, 0, 0, 1)"> }
</span><span style="color: rgba(0, 128, 128, 1)">183</span> <span style="color: rgba(0, 0, 0, 1)"> }
</span><span style="color: rgba(0, 128, 128, 1)">184</span> <span style="color: rgba(0, 0, 0, 1)"> };
</span><span style="color: rgba(0, 128, 128, 1)">185</span> </script>
<span style="color: rgba(0, 128, 128, 1)">186</span>
<span style="color: rgba(0, 128, 128, 1)">187</span> <style lang="scss" scoped>
<span style="color: rgba(0, 128, 128, 1)">188</span> $uni-searchbar-<span style="color: rgba(0, 0, 0, 1)">height: 36px;
</span><span style="color: rgba(0, 128, 128, 1)">189</span>
<span style="color: rgba(0, 128, 128, 1)">190</span> .uni-<span style="color: rgba(0, 0, 0, 1)">searchbar {
</span><span style="color: rgba(0, 128, 128, 1)">191</span> <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> #ifndef APP-NVUE </span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 128, 128, 1)">192</span> <span style="color: rgba(0, 0, 0, 1)"> display: flex;
</span><span style="color: rgba(0, 128, 128, 1)">193</span> <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> #endif </span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 128, 128, 1)">194</span> flex-<span style="color: rgba(0, 0, 0, 1)">direction: row;
</span><span style="color: rgba(0, 128, 128, 1)">195</span> <span style="color: rgba(0, 0, 0, 1)"> position: relative;
</span><span style="color: rgba(0, 128, 128, 1)">196</span> padding: $uni-spacing-col-<span style="color: rgba(0, 0, 0, 1)">base;
</span><span style="color: rgba(0, 128, 128, 1)">197</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> background-color: $uni-bg-color;</span>
<span style="color: rgba(0, 128, 128, 1)">198</span> <span style="color: rgba(0, 0, 0, 1)"> }
</span><span style="color: rgba(0, 128, 128, 1)">199</span>
<span style="color: rgba(0, 128, 128, 1)">200</span> .uni-<span style="color: rgba(0, 0, 0, 1)">searchbar__box {
</span><span style="color: rgba(0, 128, 128, 1)">201</span> <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> #ifndef APP-NVUE </span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 128, 128, 1)">202</span> <span style="color: rgba(0, 0, 0, 1)"> display: flex;
</span><span style="color: rgba(0, 128, 128, 1)">203</span> box-sizing: border-<span style="color: rgba(0, 0, 0, 1)">box;
</span><span style="color: rgba(0, 128, 128, 1)">204</span> <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> #endif </span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 128, 128, 1)">205</span> <span style="color: rgba(0, 0, 0, 1)"> overflow: hidden;
</span><span style="color: rgba(0, 128, 128, 1)">206</span> <span style="color: rgba(0, 0, 0, 1)"> position: relative;
</span><span style="color: rgba(0, 128, 128, 1)">207</span> flex: 1<span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">208</span> justify-<span style="color: rgba(0, 0, 0, 1)">content: center;
</span><span style="color: rgba(0, 128, 128, 1)">209</span> flex-<span style="color: rgba(0, 0, 0, 1)">direction: row;
</span><span style="color: rgba(0, 128, 128, 1)">210</span> align-<span style="color: rgba(0, 0, 0, 1)">items: center;
</span><span style="color: rgba(0, 128, 128, 1)">211</span> height: $uni-searchbar-<span style="color: rgba(0, 0, 0, 1)">height;
</span><span style="color: rgba(0, 128, 128, 1)">212</span> <span style="color: rgba(0, 0, 0, 1)"> padding: 5px 8px 5px 0px;
</span><span style="color: rgba(0, 128, 128, 1)">213</span> border-width: 0<span style="color: rgba(0, 0, 0, 1)">.5px;
</span><span style="color: rgba(0, 128, 128, 1)">214</span> border-<span style="color: rgba(0, 0, 0, 1)">style: solid;
</span><span style="color: rgba(0, 128, 128, 1)">215</span> border-color: $uni-border-<span style="color: rgba(0, 0, 0, 1)">color;
</span><span style="color: rgba(0, 128, 128, 1)">216</span> <span style="color: rgba(0, 0, 0, 1)"> }
</span><span style="color: rgba(0, 128, 128, 1)">217</span>
<span style="color: rgba(0, 128, 128, 1)">218</span> .uni-searchbar__box-icon-<span style="color: rgba(0, 0, 0, 1)">search {
</span><span style="color: rgba(0, 128, 128, 1)">219</span> <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> #ifndef APP-NVUE </span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 128, 128, 1)">220</span> <span style="color: rgba(0, 0, 0, 1)"> display: flex;
</span><span style="color: rgba(0, 128, 128, 1)">221</span> <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> #endif </span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 128, 128, 1)">222</span> flex-<span style="color: rgba(0, 0, 0, 1)">direction: row;
</span><span style="color: rgba(0, 128, 128, 1)">223</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> width: 32px;</span>
<span style="color: rgba(0, 128, 128, 1)">224</span> padding: 0<span style="color: rgba(0, 0, 0, 1)"> 8px;
</span><span style="color: rgba(0, 128, 128, 1)">225</span> justify-<span style="color: rgba(0, 0, 0, 1)">content: center;
</span><span style="color: rgba(0, 128, 128, 1)">226</span> align-<span style="color: rgba(0, 0, 0, 1)">items: center;
</span><span style="color: rgba(0, 128, 128, 1)">227</span> color: $uni-text-color-<span style="color: rgba(0, 0, 0, 1)">placeholder;
</span><span style="color: rgba(0, 128, 128, 1)">228</span> <span style="color: rgba(0, 0, 0, 1)"> }
</span><span style="color: rgba(0, 128, 128, 1)">229</span>
<span style="color: rgba(0, 128, 128, 1)">230</span> .uni-searchbar__box-search-<span style="color: rgba(0, 0, 0, 1)">input {
</span><span style="color: rgba(0, 128, 128, 1)">231</span> flex: 1<span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">232</span> font-size: $uni-font-size-<span style="color: rgba(0, 0, 0, 1)">base;
</span><span style="color: rgba(0, 128, 128, 1)">233</span> color: $uni-text-<span style="color: rgba(0, 0, 0, 1)">color;
</span><span style="color: rgba(0, 128, 128, 1)">234</span> <span style="color: rgba(0, 0, 0, 1)"> }
</span><span style="color: rgba(0, 128, 128, 1)">235</span>
<span style="color: rgba(0, 128, 128, 1)">236</span> .uni-searchbar__box-icon-<span style="color: rgba(0, 0, 0, 1)">clear {
</span><span style="color: rgba(0, 128, 128, 1)">237</span> align-<span style="color: rgba(0, 0, 0, 1)">items: center;
</span><span style="color: rgba(0, 128, 128, 1)">238</span> line-<span style="color: rgba(0, 0, 0, 1)">height: 24px;
</span><span style="color: rgba(0, 128, 128, 1)">239</span> padding-<span style="color: rgba(0, 0, 0, 1)">left: 8px;
</span><span style="color: rgba(0, 128, 128, 1)">240</span> <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> #ifdef H5 </span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 128, 128, 1)">241</span> <span style="color: rgba(0, 0, 0, 1)"> cursor: pointer;
</span><span style="color: rgba(0, 128, 128, 1)">242</span> <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> #endif </span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 128, 128, 1)">243</span> <span style="color: rgba(0, 0, 0, 1)"> }
</span><span style="color: rgba(0, 128, 128, 1)">244</span>
<span style="color: rgba(0, 128, 128, 1)">245</span> .uni-searchbar__text-<span style="color: rgba(0, 0, 0, 1)">placeholder {
</span><span style="color: rgba(0, 128, 128, 1)">246</span> font-size: $uni-font-size-<span style="color: rgba(0, 0, 0, 1)">base;
</span><span style="color: rgba(0, 128, 128, 1)">247</span> color: $uni-text-color-<span style="color: rgba(0, 0, 0, 1)">placeholder;
</span><span style="color: rgba(0, 128, 128, 1)">248</span> margin-<span style="color: rgba(0, 0, 0, 1)">left: 5px;
</span><span style="color: rgba(0, 128, 128, 1)">249</span> <span style="color: rgba(0, 0, 0, 1)"> }
</span><span style="color: rgba(0, 128, 128, 1)">250</span>
<span style="color: rgba(0, 128, 128, 1)">251</span> .uni-<span style="color: rgba(0, 0, 0, 1)">searchbar__cancel {
</span><span style="color: rgba(0, 128, 128, 1)">252</span> padding-<span style="color: rgba(0, 0, 0, 1)">left: 10px;
</span><span style="color: rgba(0, 128, 128, 1)">253</span> line-height: $uni-searchbar-<span style="color: rgba(0, 0, 0, 1)">height;
</span><span style="color: rgba(0, 128, 128, 1)">254</span> font-<span style="color: rgba(0, 0, 0, 1)">size: 14px;
</span><span style="color: rgba(0, 128, 128, 1)">255</span> color: $uni-text-<span style="color: rgba(0, 0, 0, 1)">color;
</span><span style="color: rgba(0, 128, 128, 1)">256</span> <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> #ifdef H5 </span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 128, 128, 1)">257</span> <span style="color: rgba(0, 0, 0, 1)"> cursor: pointer;
</span><span style="color: rgba(0, 128, 128, 1)">258</span> <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> #endif </span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 128, 128, 1)">259</span> <span style="color: rgba(0, 0, 0, 1)"> }
</span><span style="color: rgba(0, 128, 128, 1)">260</span> </style></pre>
</div>
<span class="cnblogs_code_collapse">luyj-search-bar.vue</span></div>
<h2>编写插件文档</h2>
<ol>
<li>打开文件readme.md 编写插件文档。</li>
<li>右击编写的插件,点击“发布到插件市场”。</li>
</ol>
<h2>发布到插件市场</h2>
<p>1. 弹出发布到市场对话框。填写发布信息,包括分类、插件显示名称等。</p>
<p align="center"><img alt="" data-src="https://img2020.cnblogs.com/blog/1602649/202107/1602649-20210713184210054-1072133277.png"> </p>
<p>2. 弹出发布到市场对话框。填写发布信息,包括分类、插件显示名称等。</p>
<p align="center"><img src="https://img2020.cnblogs.com/blog/1602649/202107/1602649-20210713184210048-1041695347.png"><br><img src="https://img2020.cnblogs.com/blog/1602649/202107/1602649-20210713184209924-543039375.png"> </p>
<p align="center"><img src="https://img2020.cnblogs.com/blog/1602649/202107/1602649-20210713184210043-1622569574.png"></p>
<p align="center"> <img src="https://img2020.cnblogs.com/blog/1602649/202107/1602649-20210713184209951-870146058.png"> </p>
<blockquote>
<p>注:插件发布的内容对应pack.json配置文件,可以编写插件配置。配置的详细说明请参考:https://uniapp.dcloud.io/uni_modules?id=%e9%85%8d%e7%bd%ae</p>
</blockquote>
<p>3.更新日志为必填项。添加的更新日志,会与文件changelog.md同步。</p>
<p align="center"><img src="https://img2020.cnblogs.com/blog/1602649/202107/1602649-20210713184209947-613656374.png"> </p>
<h1>参考网址</h1>
<ul>
<li>https://uniapp.dcloud.io/uni_modules?id=%e7%9b%ae%e5%bd%95%e7%bb%93%e6%9e%84</li>
<li>https://uniapp.dcloud.io/uni_modules?id=%e9%85%8d%e7%bd%ae</li>
</ul>
</div>
<div id="MySignature" role="contentinfo">
有志者,事竟成,破釜沉舟,百二秦关终属楚; 苦心人,天不负,卧薪尝胆,三千越甲可吞吴。<br><br>
来源:https://www.cnblogs.com/luyj00436/p/15007870.html
頁:
[1]