姬钛镁 發表於 2021-7-13 18:42:00

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">&nbsp;</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">&nbsp;</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> &lt;template&gt;
<span style="color: rgba(0, 128, 128, 1)">2</span>   &lt;view class="uni-searchbar"&gt;
<span style="color: rgba(0, 128, 128, 1)">3</span>         &lt;view :style="{borderRadius:radius+'px',backgroundColor: bgColor}" class="uni-searchbar__box" @click="searchClick"&gt;
<span style="color: rgba(0, 128, 128, 1)">4</span>             &lt;view class="uni-searchbar__box-icon-search"&gt;
<span style="color: rgba(0, 128, 128, 1)">5</span>               &lt;slot name="searchIcon"&gt;
<span style="color: rgba(0, 128, 128, 1)">6</span>                     &lt;uni-icons color="#999999" size="18" type="search" /&gt;
<span style="color: rgba(0, 128, 128, 1)">7</span>               &lt;/slot&gt;
<span style="color: rgba(0, 128, 128, 1)">8</span>             &lt;/view&gt;
<span style="color: rgba(0, 128, 128, 1)">9</span>             &lt;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" /&gt;
<span style="color: rgba(0, 128, 128, 1)"> 11</span>             &lt;text v-<span style="color: rgba(0, 0, 255, 1)">else</span> class="uni-searchbar__text-placeholder"&gt;{{ placeholder }}&lt;/text&gt;
<span style="color: rgba(0, 128, 128, 1)"> 12</span>             &lt;view v-<span style="color: rgba(0, 0, 255, 1)">if</span>="show &amp;&amp; (clearButton==='always'||clearButton==='auto'&amp;&amp;searchVal!=='')" class="uni-searchbar__box-icon-clear"
<span style="color: rgba(0, 128, 128, 1)"> 13</span>            @click="clear"&gt;
<span style="color: rgba(0, 128, 128, 1)"> 14</span>               &lt;slot name="clearIcon"&gt;
<span style="color: rgba(0, 128, 128, 1)"> 15</span>                     &lt;uni-icons color="#c0c4cc" size="15" type="clear" /&gt;
<span style="color: rgba(0, 128, 128, 1)"> 16</span>               &lt;/slot&gt;
<span style="color: rgba(0, 128, 128, 1)"> 17</span>             &lt;/view&gt;
<span style="color: rgba(0, 128, 128, 1)"> 18</span>         &lt;/view&gt;
<span style="color: rgba(0, 128, 128, 1)"> 19</span>         &lt;text @click="cancel" class="uni-searchbar__cancel" v-<span style="color: rgba(0, 0, 255, 1)">if</span>="cancelButton ==='always' || show &amp;&amp; cancelButton ==='auto'"
<span style="color: rgba(0, 128, 128, 1)"> 20</span>          :style="{color: cancelColor}"&gt;{{cancelText}}&lt;/text&gt;
<span style="color: rgba(0, 128, 128, 1)"> 21</span>   &lt;/view&gt;
<span style="color: rgba(0, 128, 128, 1)"> 22</span> &lt;/template&gt;
<span style="color: rgba(0, 128, 128, 1)"> 23</span>
<span style="color: rgba(0, 128, 128, 1)"> 24</span> &lt;script&gt;
<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(() =&gt;<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(() =&gt;<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> &lt;/script&gt;
<span style="color: rgba(0, 128, 128, 1)">186</span>
<span style="color: rgba(0, 128, 128, 1)">187</span> &lt;style lang="scss" scoped&gt;
<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> &lt;/style&gt;</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">&nbsp;</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">&nbsp;<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">&nbsp;</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]
查看完整版本: uni-app 之创建和发布uni-modules插件