CN104915212B - 一种可传参的javascript模块文件引入执行的方法 - Google Patents
一种可传参的javascript模块文件引入执行的方法 Download PDFInfo
- Publication number
- CN104915212B CN104915212B CN201510342432.5A CN201510342432A CN104915212B CN 104915212 B CN104915212 B CN 104915212B CN 201510342432 A CN201510342432 A CN 201510342432A CN 104915212 B CN104915212 B CN 104915212B
- Authority
- CN
- China
- Prior art keywords
- parameter
- script
- label
- code
- module files
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Devices For Executing Special Programs (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及前端开发技术领域,尤其适合引入需要传入参数灵活可重用的javascript模块文件。本发明在被引入的javascript模块文件中增加获取传入获取参数、处理参数、调用接口等相关逻辑代码;通过常规引入javascript模块文件,在<script>标签中根据模块的需求增加自定义参数;被引入的javascript模块文件在加载解析的过程中执行上述增加的处理代码,从而实现独立的引入执行机制。本发明能够构建一种相当灵活的javascript模块文件:在<script>标签处传入参数可实现引入执行机制;不传入参数可使用传统的模式来调用模块接口。用于javascript模块引入执行。
Description
技术领域
本发明涉及前端开发技术领域,尤其适合引入需要传入参数灵活可重用的javascript模块文件。
背景技术
近几年前端技术的不断发展,用户对软件界面的人机交互的要求越来越高,使得软件界面的复杂程度也相应地变得越来越高,前端开发人员越来越偏向开发一种可重用的javascript模块模块封装在单独的一个js文件中,在使用时候引入此模块文件,使用适当的参数调用接口即可快捷实现某种常用的交互效果,可重用模块化开发模式能够大大提高开发人员的工作效率。
同时jquery框架和软件开源的流行,jquery简单优雅流畅的调用方式使得开发变成艺术,推动越来越多人开发一种通过传入适当参数调用相应的接口便可实现复杂效果的jquery插件。
传统的模式是:先引入javascript模块文件,在其他地方编写代码传入适当的参数调用接口。这本来是理所当然的事情,但是随着用户对界面的交互越来越多,界面所引入的javascript模块越来越多,不断重复着引入-调用的模式。代码越来越复杂,同时代码的耦合程度不断增强,代码变得越来越不好维护了。某一天某一个模块需要替换或者删除,开发人员需要删除javascript模块文件的引入,然后在一堆代码中寻找调用此接口的代码。如果这是另外开发人员编写的代码的情况,当前的开发人员可能需要通过多次的尝试才能把调用接口的代码分毫不差地正确删除,对开发人员来说是一件痛苦而且浪费时间但是又必须面对的工作。
发明内容
本发明解决的技术问题在于提供一种可传参的javascript模块文件引入执行的方法,解决“引入javascript模块文件--在其他地方调用javascript模块接口”这种传统模式带来的代码耦合和维护困难的问题。
本发明解决上述技术问题的技术方案是:
在被引入的javascript模块文件中增加获取传入获取参数、处理参数、调用接口等相关逻辑代码;通过常规引入javascript模块文件,在<script>标签中根据模块的需求增加自定义参数;被引入的javascript模块文件在加载解析的过程中执行上述增加的代码,从而实现独立的引入执行机制。
所述方法的具体流程为:
第一步,在被引入的javascript模块文件的基础上添加获取当前<script>标签所传入的参数的逻辑代码;
var scripts=document.getElementsByTagName(‘script’),
//获取所有标签
config=scripts[scripts.length-1].getAttribute(‘data-config’);
//获取当前标签的所有参数
其中data-config这个参数是给<script>标签设置的自定义属性,之所以增加data-的前缀,是因为遵从html5的标准,给数据类型的属性增加前缀便于区分;若传入的参数为object类型字符串,则增加把object字符串正确解析成object类型的代码:
config=eval(‘(’+config+’)’);
第二步,在被引入javascript模块文件中增加处理参数的逻辑代码:
(1).<script>标签没传入参数:等待外部代码使用参数调用接口;
(2).<script>标签传入参数且data-config参数为default:在模块内部按照定义的默认参数调用接口;
(3).<script>标签传入参数且data-config参数为非default的其他值:在模块内部使用传入的参数覆盖默认的参数调用接口;
第三步,通过<script>标签引入javascript模块文件,并添加data-config=”{autoStart:1,second:1}”的属性;
第四步,解析被引入的javascript模块文件的过程中,模块内部代码获取并解析data-config的参数并覆盖默认的autoStart和second这两个参数;
第五步,在模块内部使用合并后的参数调用接口。
所述方法中不传参数的详细引入执行流程为:
第一步,在被引入的javascript模块文件的基础上添加获取<script>标签所传入参数的逻辑代码:
var scripts=document.getElementsByTagName(‘script’),
config=scripts[scripts.length-1].getAttribute(‘data-config’);
其中data-config这个参数是给<script>标签设置的属性,增加data-的前缀是遵从html5的标准;
第二步,在模块文件内部增加没传参的判断,等到外部代码调用接口;
第三步,使用<script>标签正常引入javascript模块文件;
第四步,在外部代码中使用参数调用接口。
本发明与传统的模式相比,javascript模块文件的独立性强,无需再在别的地方调用被引入的javascript模块文件所提供的接口完成执行,仅需在引入时候传入参数即可实现引入执行。本发明同时兼容传统的模式,对于不传入参数的情况则使用传统的模式执行。
附图说明
下面结合附图对本发明进一步说明:
图1是本发明详细流程。
具体实施方式
如图1所示,本发明通过在<script>引入javascript中设置data-config参数和在被引入的javascript模块文件中处理data-config的详细流程。
下面以调用一个轮播的焦点图--jquery插件easySlider为例,详细说明本发明的具体实施方式:
第一步,在easySlider中添加以下代码:
获取参数:
第二步,通过<script type=”text/javascript”data-sliderID=’#myslider’data-config=”{speed:600}”src=”plugins/easyslider.js”>的方式引入。与传统引入方式的显著差异是:添加了data-sliderID和data-config这两个参数。easySlider模块文件内部在解析的过程中调用了第一步添加的代码,即可在ID为myslider的元素中,使用了speed:600,auto:true,continuous:true这三个参数执行了easyslider效果。其中speed:600是使用了外部传入的方式,其余两个均直接使用了模块内部自定义的默认值,如需要覆盖这两个值,在data-config增加即可。
Claims (2)
1.一种可传参的javascript模块文件引入执行的方法,其特征在于:在被引入的javascript模块文件中增加获取传入获取参数、处理参数、调用接口的相关逻辑代码;通过常规引入javascript模块文件,在<script>标签中根据模块的需求增加自定义参数;被引入的javascript模块文件在加载解析的过程中执行上述增加的代码,从而实现独立的引入执行机制;
所述方法的具体流程为:
第一步,在被引入的javascript模块文件的基础上添加获取当前<script>标签所传入的参数的逻辑代码;
利用程序var scripts=document.getElementsByTagName(‘script’),此代码的功能是获取所有script标签,scripts参数表示获取所有标签对象;
利用程序config=scripts[scripts.length-1].getAttribute(‘data-config’),此代码的功能是获取当前标签的所有参数;
其中data-config这个参数是给<script>标签设置的自定义属性,之所以增加data-的前缀,是因为遵从html5的标准,给数据类型的属性增加前缀便于区分;若传入的参数为object类型字符串,则增加把object字符串正确解析成object类型的代码;
第二步,在被引入javascript模块文件中增加处理参数的逻辑代码:
(1).若<script>标签没传入参数:等待外部代码使用参数调用接口;
(2).若<script>标签传入参数且data-config参数为default:在模块内部按照定义的默认参数调用接口;
(3).若<script>标签传入参数且data-config参数为非default的其他值:在模块内部使用传入的参数覆盖默认的参数调用接口;
第三步,通过<script>标签引入javascript模块文件,并添加data-config=”{autoStart:1,second:1}”的属性;其中autoStart表示是否自动执行,其中,0表示不自动执行,1表示自动执行;如果autoStart为0时,则second参数失效;否则second的数值越大,执行的优先级越高;
第四步,解析被引入的javascript模块文件的过程中,模块内部代码获取并解析data-config的参数并覆盖默认的autoStart和second这两个参数;autoStart默认为0,second参数失效;
第五步,在模块内部使用合并后的参数调用接口。
2.根据权利要求1所述的方法,其特征在于:所述方法中不传参数的详细引入执行流程为:
第一步,在被引入的javascript模块文件的基础上添加获取<script>标签所传入参数的逻辑代码;
在逻辑代码中,data-config这个参数是给<script>标签设置的属性,增加data-的前缀是遵从html5的标准;
第二步,在模块文件内部增加没传参的判断,等到外部代码调用接口;如果没传入参数,不作任何处理;
第三步,使用<script>标签正常引入javascript模块文件;
第四步,在外部代码中使用参数调用接口。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510342432.5A CN104915212B (zh) | 2015-06-18 | 2015-06-18 | 一种可传参的javascript模块文件引入执行的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510342432.5A CN104915212B (zh) | 2015-06-18 | 2015-06-18 | 一种可传参的javascript模块文件引入执行的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104915212A CN104915212A (zh) | 2015-09-16 |
CN104915212B true CN104915212B (zh) | 2018-03-30 |
Family
ID=54084296
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510342432.5A Active CN104915212B (zh) | 2015-06-18 | 2015-06-18 | 一种可传参的javascript模块文件引入执行的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104915212B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106775788B (zh) * | 2015-11-19 | 2019-08-20 | 中国科学院声学研究所 | 一种自动生成和运行JavaScript文件的方法 |
CN111061467B (zh) * | 2019-12-09 | 2023-03-21 | 东莞数汇大数据有限公司 | 一种前端工程请求模块高效管理的方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103440151A (zh) * | 2013-09-05 | 2013-12-11 | 北京京东尚科信息技术有限公司 | 一种动态加载Web页面的方法和装置 |
CN103984548A (zh) * | 2014-05-14 | 2014-08-13 | 陕西上讯信息技术有限公司 | 一种web应用前端框架及其构建方法、*** |
CN104331288A (zh) * | 2014-10-31 | 2015-02-04 | 北京思特奇信息技术股份有限公司 | 一种配置化展现动态页面的方法及*** |
CN104375858A (zh) * | 2014-10-27 | 2015-02-25 | 深信服网络科技(深圳)有限公司 | 多浏览器平台执行javascript脚本的方法及装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB0016822D0 (en) * | 2000-07-07 | 2000-08-30 | Global Freight Exchange Limite | Method computer system and computer system network for data management |
US7689663B2 (en) * | 2005-03-24 | 2010-03-30 | Hewlett-Packard Development Company, L.P. | Embedded web-based management method |
-
2015
- 2015-06-18 CN CN201510342432.5A patent/CN104915212B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103440151A (zh) * | 2013-09-05 | 2013-12-11 | 北京京东尚科信息技术有限公司 | 一种动态加载Web页面的方法和装置 |
CN103984548A (zh) * | 2014-05-14 | 2014-08-13 | 陕西上讯信息技术有限公司 | 一种web应用前端框架及其构建方法、*** |
CN104375858A (zh) * | 2014-10-27 | 2015-02-25 | 深信服网络科技(深圳)有限公司 | 多浏览器平台执行javascript脚本的方法及装置 |
CN104331288A (zh) * | 2014-10-31 | 2015-02-04 | 北京思特奇信息技术股份有限公司 | 一种配置化展现动态页面的方法及*** |
Also Published As
Publication number | Publication date |
---|---|
CN104915212A (zh) | 2015-09-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110196719B (zh) | 一种基于自然语言处理的业务规则生成方法与*** | |
CN103281311B (zh) | 一种使用Protobuf描述的物联网协议解析方法 | |
CN102289375B (zh) | 代码生成方法及*** | |
CN103870260A (zh) | 业务接口开发的方法及*** | |
CN104410667B (zh) | 一种xml报文到json报文的转换方法及*** | |
US9922009B2 (en) | Network media information display system, method, apparatus and server | |
CN104915212B (zh) | 一种可传参的javascript模块文件引入执行的方法 | |
CN102981855A (zh) | 基于模板的界面自动生成的方法及*** | |
CN104407863A (zh) | 抽象控件模型编程装置和方法 | |
CN103677779A (zh) | 一种灵活的页面配置展现方法 | |
CN110275700A (zh) | 一种基于electron的跨平台桌面应用程序开发框架及方法 | |
US20080155519A1 (en) | Code translator | |
CN107153535B (zh) | 一种操作ElasticSearch的方法及装置 | |
CN104991952B (zh) | 一种智能数据分发流程引擎及其同步数据的方法 | |
CN103246515A (zh) | 一种可视化mvc功能建模控制方法 | |
CN103984665A (zh) | 基于LabVIEW的串口通信装置及方法 | |
CN103544298A (zh) | 组件的日志分析方法和分析装置 | |
CN109522008A (zh) | 一种区块链智能合约构建方法 | |
CN103116503A (zh) | 一种多窗口的实现方法及装置 | |
CN112464620A (zh) | 一种财务规则引擎的实现方法及实现*** | |
CN106909435A (zh) | 一种网络安全设备命令行的解析方法和装置 | |
CN104918113B (zh) | 一种模块电视的功能卡端兼容方法及*** | |
CN104461615B (zh) | 一种皮肤资源的处理方法及电子设备 | |
CN104007944A (zh) | 一种调试打印方法及调试打印*** | |
CN103823681B (zh) | 一种web控件的生成方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP02 | Change in the address of a patent holder | ||
CP02 | Change in the address of a patent holder |
Address after: 523808 19th Floor, Cloud Computing Center, Chinese Academy of Sciences, No. 1 Kehui Road, Songshan Lake Hi-tech Industrial Development Zone, Dongguan City, Guangdong Province Patentee after: G-Cloud Technology Co., Ltd. Address before: 523808 No. 14 Building, Songke Garden, Songshan Lake Science and Technology Industrial Park, Dongguan City, Guangdong Province Patentee before: G-Cloud Technology Co., Ltd. |