jQuery插件开发精品教程,让你的jQuery提升一个台阶bloger11

要说jQuery最成功的地方,我认为是它的可扩展性吸引了众多开发者为其开发插件,从而建立起了一个生态系统。这好比大公司们争相做平台一样,得平台者得天下。苹果,微软,谷歌等巨头,都有各自的平台及生态圈。

学会使用jQuery并不难,因为它简单易学,并且相信你接触jQuery后肯定也使用或熟悉了不少其插件。如果要将能力上升一个台阶,编写一个属于自己的插件是个不错的选择。

本教程可能不是最精品的,但一定是最细致的。

软件开发过程中是需要一定的设计模式来指导开发的,有了模式,我们就能更好地组织我们的代码,并且从这些前人总结出来的模式中学到很多好的实践。

根据《jQuery高级编程》的描述,jQuery插件开发方式主要有三种:

通常我们使用第二种方法来进行简单插件开发,说简单是相对于第三种方式。第三种方式是用来开发更高级jQuery部件的,该模式开发出来的部件带有很多jQuery内建的特性,比如插件的状态信息自动保存,各种关于插件的常用方法等,非常贴心,这里不细说。

而第一种方式又太简单,仅仅是在jQuery命名空间或者理解成jQuery身上添加了一个静态方法而以。所以我们调用通过$.extend()添加的函数时直接通过$符号调用($.myfunction())而不需要选中DOM元素($('#example').myfunction())。请看下面的例子。

$.extend({sayHello:function(name){console.log('Hello,'+(namename:'Dude')+'!');}})$.sayHello();//调用$.sayHello('Wayou');//带参调用

运行结果:

上面代码中,通过$.extend()向jQuery添加了一个sayHello函数,然后通过$直接调用。到此你可以认为我们已经完成了一个简单的jQuery插件了。

但如你所见,这种方式用来定义一些辅助方法是比较方便的。比如一个自定义的console,输出特定格式的信息,定义一次后可以通过jQuery在程序中任何需要的地方调用它。

$.extend({log:function(message){varnow=newDate(),y=now.getFullYear(),m=now.getMonth()+1,//!JavaScript中月分是从0开始的d=now.getDate(),h=now.getHours(),min=now.getMinutes(),s=now.getSeconds(),time=y+'/'+m+'/'+d+''+h+':'+min+':'+s;console.log(time+'MyApp:'+message);}})$.log('initializing...');//调用

但这种方式无法利用jQuery强大的选择器带来的便利,要处理DOM元素以及将插件更好地运用于所选择的元素身上,还是需要使用第二种开发方式。你所见到或使用的插件也大多是通过此种方式开发。

下面我们就来看第二种方式的jQuery插件开发。

先看一下它的基本格式:

$.fn.pluginName=function(){//yourcodegoeshere}

基本上就是往$.fn上面添加一个方法,名字是我们的插件名称。然后我们的插件代码在这个方法里面展开。

比如我们将页面上所有链接颜色转成红色,则可以这样写这个插件:

$.fn.myPlugin=function(){//在这里面,this指的是用jQuery选中的元素//example:$('a'),则this=$('a')this.css('color','red');}在插件名字定义的这个函数内部,this指代的是我们在调用该插件时,用jQuery选择器选中的元素,一般是一个jQuery类型的集合。比如$('a')返回的是页面上所有a标签的集合,且这个集合已经是jQuery包装类型了,也就是说,在对其进行操作的时候可以直接调用jQuery的其他方法而不需要再用美元符号来包装一下。

所以在上面插件代码中,我们在this身上调用jQuery的css()方法,也就相当于在调用$('a').css()。

理解this在这个地方的含义很重要。这样你才知道为什么可以直接调用jQuery方法同时在其他地方this指代不同时我们又需要用jQuery重新包装才能调用,下面会讲到。初学容易被this的值整晕,但理解了就不难。

现在就可以去页面试试我们的代码了,在页面上放几个链接,调用插件后链接字体变成红色。

下面进一步,在插件代码里处理每个具体的元素,而不是对一个集合进行处理,这样我们就可以针对每个元素进行相应操作。

我们已经知道this指代jQuery选择器返回的集合,那么通过调用jQuery的.each()方法就可以处理合集中的每个元素了,但此刻要注意的是,在each方法内部,this指带的是普通的DOM元素了,如果需要调用jQuery的方法那就需要用$来重新包装一下。

更改后我们的插件代码为:

调用代码还是一样的,我们通过选中页面所有的a标签来调用这个插件

到此,你已经可以编写功能简单的jQuery插件了。是不是也没那么难。

下面开始jQuery插件编写中一个重要的部分,参数的接收。

我们都知道jQuery一个非常优雅的特性是支持链式调用,选择好DOM元素后可以不断地调用其他方法。

要让插件不打破这种链式调用,只需return一下即可。

一个强劲的插件是可以让使用者随意定制的,这要求我们在编写插件时就要考虑得全面些,尽量提供合适的参数。

比如现在我们不想让链接只变成红色,我们让插件的使用者自己定义显示什么颜色,要做到这一点很方便,只需要使用者在调用的时候传入一个参数即可。同时我们在插件的代码里面接收。另一方面,为了灵活,使用者可以不传递参数,插件里面会给出参数的默认值。

在处理插件参数的接收上,通常使用jQuery的extend方法,上面也提到过,但那是给extend方法传递单个对象的情况下,这个对象会合并到jQuery身上,所以我们就可以在jQuery身上调用新合并对象里包含的方法了,像上面的例子。当给extend方法传递一个以上的参数时,它会将所有参数对象合并到第一个里。同时,如果对象中有同名属性时,合并的时候后面的会覆盖前面的。

利用这一点,我们可以在插件里定义一个保存插件参数默认值的对象,同时将接收来的参数对象合并到默认对象上,最后就实现了用户指定了值的参数使用指定的值,未指定的参数使用插件默认值。

为了演示方便,再指定一个参数fontSize,允许调用插件的时候设置字体大小。

$.fn.myPlugin=function(options){vardefaults={'color':'red','fontSize':'12px'};varsettings=$.extend(defaults,options);returnthis.css({'color':settings.color,'fontSize':settings.fontSize});}

现在,我们调用的时候指定颜色,字体大小未指定,会运用插件里的默认值12px。

$('a').myPlugin({'color':'#2C9929'});

同时指定颜色与字体大小:

$('a').myPlugin({'color':'#2C9929','fontSize':'20px'});

注意到上面代码调用extend时会将defaults的值改变,这样不好,因为它作为插件因有的一些东西应该维持原样,另外就是如果你在后续代码中还要使用这些默认值的话,当你再次访问它时它已经被用户传进来的参数更改了。

一个好的做法是将一个新的空对象做为$.extend的第一个参数,defaults和用户传递的参数对象紧随其后,这样做的好处是所有值被合并到这个空对象上,保护了插件里面的默认值。

$.fn.myPlugin=function(options){vardefaults={'color':'red','fontSize':'12px'};varsettings=$.extend({},defaults,options);//将一个空对象做为第一个参数returnthis.css({'color':settings.color,'fontSize':settings.fontSize});}

到此,插件可以接收和处理参数后,就可以编写出更健壮而灵活的插件了。若要编写一个复杂的插件,代码量会很大,如何组织代码就成了一个需要面临的问题,没有一个好的方式来组织这些代码,整体感觉会杂乱无章,同时也不好维护,所以将插件的所有方法属性包装到一个对象上,用面向对象的思维来进行开发,无疑会使工作轻松很多。

为什么要有面向对象的思维,因为如果不这样,你可能需要一个方法的时候就去定义一个function,当需要另外一个方法的时候,再去随便定义一个function,同样,需要一个变量的时候,毫无规则地定义一些散落在代码各处的变量。

还是老问题,不方便维护,也不够清晰。当然,这些问题在代码规模较小时是体现不出来的。

如果将需要的重要变量定义到对象的属性上,函数变成对象的方法,当我们需要的时候通过对象来获取,一来方便管理,二来不会影响外部命名空间,因为所有这些变量名还有方法名都是在对象内部。

所以我们新建一个对象命名为Beautifier,然后我们在插件里使用这个对象来编码。

//定义Beautifier的构造函数varBeautifier=function(ele,opt){this.$element=ele,this.defaults={'color':'red','fontSize':'12px','textDecoration':'none'},this.options=$.extend({},this.defaults,opt)}//定义Beautifier的方法Beautifier.prototype={beautify:function(){returnthis.$element.css({'color':this.options.color,'fontSize':this.options.fontSize,'textDecoration':this.options.textDecoration});}}//在插件中使用Beautifier对象$.fn.myPlugin=function(options){//创建Beautifier的实体varbeautifier=newBeautifier(this,options);//调用其方法returnbeautifier.beautify();}

通过上面这样一改造,我们的代码变得更面向对象了,也更好维护和理解,以后要加新功能新方法,只需向对象添加新变量及方法即可,然后在插件里实例化后即可调用新添加的东西。

插件的调用还是一样的,我们对代码的改动并不影响插件其他地方,只是将代码的组织结构改动了而以。

$(function(){$('a').myPlugin({'color':'#2C9929','fontSize':'20px'});})

指定文字带下划线(我们在Beautifier对象中新加的功能,默认不带下划线,如上面的例子)的调用:

$(function(){$('a').myPlugin({'color':'#2C9929','fontSize':'20px','textDecoration':'underline'});})

到这里,你可以更好地编写复杂的插件同时很好地组织代码了。当我们回头去看上面的代码时,其实也还是有改进空间的。也就是下面介绍的关于命名空间及变量各什么的,一些杂项。

不仅仅是jQuery插件的开发,我们在写任何JS代码时都应该注意的一点是不要污染全局命名空间。因为随着你代码的增多,如果有意无意在全局范围内定义一些变量的话,最后很难维护,也容易跟别人写的代码有冲突。

比如你在代码中向全局window对象添加了一个变量status用于存放状态,同时页面中引用了另一个别人写的库,也向全局添加了这样一个同名变量,最后的结果肯定不是你想要的。所以不到万不得已,一般我们不会将变量定义成全局的。

我们知道JavaScript中无法用花括号方便地创建作用域,但函数却可以形成一个作用域,域内的代码是无法被外界访问的。如果我们将自己的代码放入一个函数中,那么就不会污染全局命名空间,同时不会和别的代码冲突。

如上面我们定义了一个Beautifier全局变量,它会被附到全局的window对象上,为了防止这种事情发生,你或许会说,把所有代码放到jQuery的插件定义代码里面去啊,也就是放到$.fn.myPlugin里面。这样做倒也是种选择。但会让我们实际跟插件定义有关的代码变得臃肿,而在$.fn.myPlugin里面我们其实应该更专注于插件的调用,以及如何与jQuery互动。

所以保持原来的代码不变,我们将所有代码用自调用匿名函数包裹。

(function(){//定义Beautifier的构造函数varBeautifier=function(ele,opt){this.$element=ele,this.defaults={'color':'red','fontSize':'12px','textDecoration':'none'},this.options=$.extend({},this.defaults,opt)}//定义Beautifier的方法Beautifier.prototype={beautify:function(){returnthis.$element.css({'color':this.options.color,'fontSize':this.options.fontSize,'textDecoration':this.options.textDecoration});}}//在插件中使用Beautifier对象$.fn.myPlugin=function(options){//创建Beautifier的实体varbeautifier=newBeautifier(this,options);//调用其方法returnbeautifier.beautify();}})();

目前为止似乎接近完美了。如果再考虑到其他一些因素,比如我们将这段代码放到页面后,前面别人写的代码没有用分号结尾,或者前面的代码将window,undefined等这些系统变量或者关键字修改掉了,正好我们又在自己的代码里面进行了使用,那结果也是不可预测的,这不是我们想要的。我知道其实你还没太明白,下面详细介绍。

来看下面的代码,你猜他会出现什么结果?

varfoo=function(){//别人的代码}//注意这里没有用分号结尾//开始我们的代码。。。(function(){//我们的代码。。alert('Hello!');})();

本来别人的代码也正常工作,只是最后定义的那个函数没有用分号结尾而以,然后当页面中引入我们的插件时,报错了,我们的代码无法正常执行。

原因是我们用来充当自调用匿名函数的第一对括号与上面别人定义的函数相连,因为中间没有分号嘛,总之我们的代码无法正常解析了,所以报错。

所以好的做法是我们在代码开头加一个分号,这在任何时候都是一个好的习惯。

varfoo=function(){//别人的代码}//注意这里没有用分号结尾//开始我们的代码。。。;(function(){//我们的代码。。alert('Hello!');})();

同时,将系统变量以参数形式传递到插件内部也是个不错的实践。

当我们这样做之后,window等系统变量在插件内部就有了一个局部的引用,可以提高访问速度,会有些许性能的提升

最后我们得到一个非常安全结构良好的代码:

;(function($,window,document,undefined){//我们的代码。。//blahblahblah...})(jQuery,window,document);

而至于这个undefined,稍微有意思一点,为了得到没有被修改的undefined,我们并没有传递这个参数,但却在接收时接收了它,因为实际并没有传,所以‘undefined’那个位置接收到的就是真实的'undefined'了。是不是有点hack的味道,值得细细体会的技术,当然不是我发明的,都是从前人的经验中学习。

所以最后我们的插件成了这样:

;(function($,window,document,undefined){//定义Beautifier的构造函数varBeautifier=function(ele,opt){this.$element=ele,this.defaults={'color':'red','fontSize':'12px','textDecoration':'none'},this.options=$.extend({},this.defaults,opt)}//定义Beautifier的方法Beautifier.prototype={beautify:function(){returnthis.$element.css({'color':this.options.color,'fontSize':this.options.fontSize,'textDecoration':this.options.textDecoration});}}//在插件中使用Beautifier对象$.fn.myPlugin=function(options){//创建Beautifier的实体varbeautifier=newBeautifier(this,options);//调用其方法returnbeautifier.beautify();}})(jQuery,window,document);

一个安全,结构良好,组织有序的插件编写完成。

现在谈谈关于变量及方法等的命名,没有硬性规定,但为了规范,遵循一些约定还是很有必要的。

变量定义:好的做法是把将要使用的变量名用一个var关键字一并定义在代码开头,变量名间用逗号隔开。原因有二:

引号的使用:既然都扯了这些与插件主题无关的了,这里再多说一句,一般HTML代码里面使用双引号,而在JavaScript中多用单引号,比如下面代码所示:

一方面,HTML代码中本来就使用的是双引号,另一方面,在JavaScript中引号中还需要引号的时候,要求我们单双引号间隔着写才是合法的语句,除非你使用转意符那也是可以的。再者,坚持这样的统一可以保持代码风格的一致,不会出现这里字符串用双引号包着,另外的地方就在用单引号。

进行完上面的步骤,已经小有所成了。或许你很早就注意到了,你下载的插件里面,一般都会提供一个压缩的版本一般在文件名里带个'min'字样。也就是minified的意思,压缩浓缩后的版本。并且平时我们使用的jQuery也是官网提供的压缩版本,jquery.min.js。

这里的压缩不是指代码进行功能上的压缩,而是通过将代码里面的变量名,方法函数名等等用更短的名称来替换,并且删除注释(如果有的话)删除代码间的空白及换行所得到的浓缩版本。同时由于代码里面的各种名称都已经被替代,别人无法阅读和分清其逻辑,也起到了混淆代码的作用。

同时也有很多在线的代码混淆压缩工具,用起来也很方便。这些工具都是一搜一大把的。

这一步不是必需的,但本着把事情做完整的态度,同时你也许也希望有更多人看到或使用你的插件吧。

THE END
1.食的笔顺笔画数:9拼音:sì,yì,shí部首:飠(会意。从饣皂,饣声。本义:饭,饭食) 同本义〖cookedcereals,especiallyrice;food〗 食,饣米也。——《说文》。按,六谷之饭曰食。 掌王之食饮。——《周礼·膳夫》。注:“饭也。” 治其粮与其食。——《周礼·廪人》。注:“止居曰食。” http://www.zhihuishan.com/bishun-view-18687.html
2.食字笔顺笔画顺序问:食的第5笔是什么笔画?答:横【一】。 问:食的第6笔是什么笔画?答:横【一】。 问:食的第7笔是什么笔画?答:竖提【】。 问:食的第8笔是什么笔画?答:撇【丿】。 问:食的第9笔是什么笔画?答:点【丶】。 展开 食笔画分步写法(图) https://bihua.gei6.com/shizibishun__vcuqj094.html
3.《食》字笔画笔顺笔划食,笔画,笔顺,写法https://bihua.bmcx.com/e9a39f__bihuachaxun/
4.食的笔顺,食的笔画怎么写,笔画顺序详解汉字笔顺大全食的笔顺详解共9画食笔顺 1撇 2捺 3点 4横折 5横 6横 7竖提 8撇 9点食的笔画写法食的意思解释食 shí 〈名〉 (会意。从饣皀,饣声。本义:饭,饭食) 同本义 [cooked cereals,especially rice;food] 食,饣米也。——《说文》。按,六谷之饭曰食。 掌王之食饮。——《周礼·膳夫》。注:“饭也。https://www.youxiaow.com/bishun/98DF.html
5.食汉字详解shí S 多音 shí yì sì 字义 ①吃的东西 ②吃 ③日月亏缺或完全看不见的现象 食 9画 组词 ①零食 面食 丰衣足食 ②食肉 ③日食 造句 随着经济的发展,人民都过上了丰衣足食的生活。 $hz.HanZi_JieGous.Name 巧记 “良”“人”可吃。 造字 $hz.HanZi_ZaoZiFas.Name书写https://www.taozhi.cn/a/75088.htm
6.食的笔顺食的笔画顺序图片和动画演示汉字笔顺笔画查询提供食的笔顺,食的笔画顺序,食的笔顺写法,食的笔画图片,食的笔顺动画。https://bishun.xhlylx.com/zkwts22ygeaks32j.html
7.食字的笔画食的笔顺怎么写食字的笔顺、笔画、写法,食的笔顺是什么,食怎么写好看https://zidian.yw11.com/bishun/%E9%A3%9F
8.教你这样写食字00:00/00:00 教你这样写食字 拳击那点事发布于:江西省2024.08.20 00:00 +1 首赞 教你这样写食字https://www.sohu.com/a/802074291_100114195
9.食的笔顺食字的笔顺(会意。从饣皂,饣声。本义:饭,饭食)同本义 食,饣米也。——《说文》。按,六谷之饭曰食。掌王之食饮。——《周礼·膳夫》。注:“饭也。”治其粮与其食。——《周礼·廪人》。注:“止居曰食。”共王及后之六食。——《周礼·馔人》。注:“六谷之饭。”小人有母,皆尝小人之食矣。——《左传·http://bishun.shufaji.com/0x98DF.html
10.食的笔顺部首:飠 基本释义 食〈名〉(会意。从饣皂,饣声。本义:饭,饭食)同本义食,饣米也。——《说文》。按,六谷之饭曰食。掌王之食饮。——《周礼·膳夫》。注:“饭也。”治其粮与其食。——《周礼·廪人》。注:“止居曰食。”共王及 查看详情https://www.hao86.com/bishun/%E9%A3%9F/
11.《食》的笔画笔顺笔划食,笔画,笔顺,写法https://zidian.bi0.cn/98DF__bishun.html
12.食的书写指导食的书写指导食的书写指导如下:食字的笔顺为:横撇/横钩、竖提、撇、捺。在书写时,要注意食字的整体结构,尤其是横撇和竖提两个笔画之间的角度和距 离。同时,在书写撇和捺时,要注意撇的角度和长度,以及捺的起笔和收笔位置。此外,还要注意食字的整体比例和平衡感,确保整个字看起来协调 https://www.360doc.cn/document/85277428_1137742599.html
13.食的笔顺食字笔画顺序汉字 食shí 部首 飠 笔顺 撇捺点 横折 横横 竖提 撇点食的笔画顺序是撇、捺、点、横折、横、横、竖提、撇、点,偏旁部首是飠。 以上参考资料就是本汉语词典详细汇总的食字的笔画顺序,如有错漏请向我们提供反馈意见。强烈推荐 名师教学: 语文 英语 其它 教育部资源中心制作的优秀精品课程 新版教材: 语文https://www.xx5515.com/bishun/719194
14.食字笔顺食字的写法* 86古诗词(www.86zhan.com)为大家提供食的笔顺,食字的笔顺写法,食字的写法以及怎么写。 编码344511534 笔画ノ丶丶フ一一フノ丶 笔顺名称撇 捺 点 横折 横 横 竖提 撇 点 写法食字共有9画,笔顺(笔画顺序)为:撇,捺,点,横折,横,横,竖提,撇,点 https://www.86zhan.com/zidian/bishun/%E9%A3%9F
15.食的笔顺笔画怎么写繁体字,亼声。楷书写法:上作「 」︰下横不接两边笔;下作「 」,为「 」(ㄒㄧㄤ)之变形。独用及当右、下偏旁时如此,如︰「飧」、「餐」、「餍」等字。若为左偏旁,次笔改顿点,末笔亦作一点,如︰「饥」、「饥」等字。 部首飠 结构上下结构 繁体字食 https://www.zcdian.com/bishun/x7gq30.html
16.食的笔画食的拼音食的笔顺食的笔画,食的拼音,食的笔顺,是笔画网提供的食字的相关信息查询功能。https://b.3415.cn/x.php?t=3&c=0&n=23&z=0
17.「食」字笔顺详解,动画演示,字帖下载食字怎么写?「食」字的笔顺查询,笔顺详解,笔顺动画演示,「食」的字帖下载,「食」规范笔划,「食」书写规范,学习食字正确的写法https://bishun.ivtool.com/19170.htm
18.楷书“食”经典写法,这样的书法只能称赞!00:37 #书法教程#这样的书法,学出来很难得! 2020-04-22 00:27 #书法教程#身边姓“钱”的朋友有福了,“钱”字签名速学! 2020-04-21 00:34 #书法欣赏#往后余生, 风雪是你, 平淡是你, 心底温柔是你, 目光所至都是你! 2020-04-21 00:23 #书法教程#钢笔书法“李”,慢速10倍,一笔一画教你会签名!http://v-wb.youku.com/v_show/id_XMzk4MjM1NDIxNg==.html?scm=20140719.rcmd.46309.video_XMzk4MjM1NDIxNg%3D%3D
19.食字旁的字怎么写才好看?超级详细实用具体的干货教程手把手一笔一超级详细实用具体的干货教程手把手一笔一划的教给你! 每周一和周四更新,为方便您及时看到最新的硬笔书法笔画新的字体分析,和往期其他详尽字体分析,请点击关注“一起来写吧”↑↑↑。 文章中的所有内容,包括文字、图片,均为原创。对未经许可擅自使用者,本人保留追究其法律责任的权利。如需转载,请先与作者联系! 打开https://dy.163.com/v2/article/detail/CTFMIORP0516E61F.html
20.?《十万字C语言动漫教程》,别用4G看,不然100M流量没了编译就是把高级语言变成计算机可以识别的二进制语言,因为计算机只认识 1 和 0,你需要把一大堆复杂的语言词法、语法全部转换成 0 和 1。 2、运行 运行就是执行可执行程序啦。就是我们通常Windows上的双击exe干的事情。 四、为什么要搭建本地环境 1)联网:在线编译环境毕竟涉及到联网,如果没有网的情况下,我们就不http://zhangshiyu.com/post/23487.html
21.关于食物链的写法.以下正确的是()A.阳光→草→蚱蜢→鸡B.鹰→鸡解答:解:食物链的起点必须是生产者,终点是消费者,箭头指向捕食者.A、起点是阳光为非生物部分,不是生产者,故不符合题意.B、起点是鹰为动物是消费者,终点是植物为生产者,不符合题意.C、都是动物为消费者,它们构不成食物链,不符合题意.D、起点是植物为生产者,蚱蜢取食植物,鸡取食蚱蜢,鹰捕食鸡,它们之间有http://www.1010jiajiao.com/czsw/shiti_id_8fa1a27622353ca93c9f7ebeac968ec7
22.食物的英文写法foodsnest粟Chinesecorn肉丸子meatballs枳橙citrange点心(中式)dimsum淀粉starch蛋挞eggtart(dryfruits)干果类:腰果Cashewnuts花生peanut无花果fig榛子filberthazel栗子chestnut核桃walnut杏仁almond果脯preservedfruit芋头taro葡萄干raisincordial开心果pistachion巴西果brazilnut菱角,荸荠waterchestnut(和国内食用法不同,做坚果食用)https://wenku.baidu.com/view/6d649b5a804d2b160b4ec054.html
23.辶食左下包围结构是什么字写法汉字:辶食左下包围结构是什么字写法,汉字:,辶食左下包围结构读什么拼音念什么,结构查字https://www.guoxuedashi.net/zidian/jg_79744y.html
24.统编版小学语文二年级下册教案(5篇)到遥远的地方去寻食, 让小鸟呆在家里 苦苦等待,饿得哭泣。 (6)播放配乐生齐读第2节 这美好的心愿,深深地打动了我们,让我们把这种美好心愿通过朗读传递下去。(齐读) 活动四:指导书写 1、出示:良食,你发现了什么? 2、这两个“良”在写法上有什么不一样?“食”中的“良”将捺变成点,这是因为如果一个https://fw.chazidian.com/mip/fanwen1200879/
25.书法口诀范文6篇(全文)71、一字只一捺,不可双捺上。(食炎趁林) 主笔捺不减,次处拄换梁。 72、复字宜减勾,一勾最适当。(禁比懋) 余勾都取消,规律不可忘。 73、有字似重围,竖繁划更紊。(爽齿器嚣) 布置宜均匀,不分主与宾。 74、向心力未酬,好像互抱手。(好妙舒饬) https://www.99xueshu.com/w/filetud855w7.html
26.语文对牛弹琴对牛弹琴对牛弹琴中牛刚开始听琴为什么“伏食如故根据《工程建设项目施工招标投标办法》,国有资金占控股或者主导地位的依法必须进行招标的项目,招标人应当确定排名第一的中标候选人为中标人。排名第一的中标候选人放弃中标、因不可抗力提出不能履行合同、不按照招标文件的要求提交履约保证金,或者被查实存在影响中标结果的违法行为等情形,不符合中标条件的,招标人可以https://www.shuashuati.com/ti/90bb3af9f8584a3e8643801fe6125bd0.html
27.粤语和普通话绕口令(精选8篇)9.施史氏嗜狮,誓食十狮。是时,十狮适市,氏视十狮,十狮 逝。氏拾十狮尸,适石室,石室湿,氏使侍拭石室,石室拭,氏视十狮:是十石狮尸! 10.哥挎瓜筐过宽沟,赶快过沟看怪狗。光看怪狗瓜筐扣,瓜滚筐空哥怪狗 1.掘柑掘桔掘金桔,掘鸡掘骨掘龟骨,掘完鸡骨掘金桔,掘完龟骨掘鸡骨。 https://www.360wenmi.com/f/file2eez128w.html
28.科技小岛相信你可以在这里找到对你有用的知识和教程。 拾荒开拓者 自己动手 丰衣足食 2024-12-31 TUE 晴3℃ 94% 04:50:45 南风 长沙市 A M Argo 节点 1Cloudflare Tunnel1DNS1Github2Google Blogger1Hexo1Koyeb 部署哪吒 1Office1koyeb1lxmusic1v2rayN1vercel1 图床 3 影视 1 直播源 1 十一月 2024 https://www.kejiland.com/
29.《曹全碑》偏旁部首合辑56食部&56食部《智永真草千字文》教程01平横、细腰横的写法及常见问题 《智永真草千字文》教程02仰横、卧横(写法&常见问题) 《智永真草千字文》教程03悬针竖、垂露竖(写法&常见问题) 《智永真草千字文》04左弧竖、右弧竖(写法&常见问题) 《智永真草千字文》05https://mp.weixin.qq.com/s?__biz=MjM5OTk1MzMwMg==&mid=2650911356&idx=3&sn=62dd34b189fe7acc4ba216d5dd990513&chksm=bcc684858bb10d937a6bc875e7ab4bb5567ded1f121565c27c74c4945a5d56095134a7c2f0cf&scene=27
30.东京食种第1季12集全视频在线观看爱奇艺搜索“东京食种第1季12集全”搜索结果页面为您提供最新最全的“东京食种第1季12集全”相关视频的搜索和在线观看服务。http://client.so.pps.tv/so/q_%E4%B8%9C%E4%BA%AC%E9%A3%9F%E7%A7%8D%E7%AC%AC1%E5%AD%A312%E9%9B%86%E5%85%A8_ctg_%E7%A7%91%E6%8A%80_t_2_page_2_p_1_qc_0_rd_3_site__m_1_bitrate_4