plugin_plugins - CSDN
plugin 订阅
Plugin
信息
操作系统
未知
开发语言
开源协议
未知
Plugin
A jQuery plugin to lazy load other plugins. Small and easy to use. To register a plugin: var plugin = $.plugin.register( url_of_the_file, names_to_register, settings ); or var plugin = new $.plugin( url_of_the_file, names_to_register, settings ); names_to_register is a hash in this form: { $:'foo', fn:['foo','bar'] } That means the plugin will register(once loaded): $.foo, $.fn.foo and $.fn.bar. For now, you can only register to those 2 namespaces. You can use 1 string or an array of names. settings is an optional hash with these options: { cache:boolean, //default is true, use false to avoid caching id:'some_name', //an id for the script, only necessary if another requires it require:[ 'some_name', 'some_other_name' ], //ids of the plugins required sync:boolean //must be loaded sync ? false by default, use it if the call modifies the 'this' } Once a call to the plugin is done, the plugin will be loaded, that call will be taken into account and you can even use chaining with this fake call. so $('a').foo().bar() will work perfectly. The plugin objects have methods( queue, add, check, load, preload, etc ) will explain them soon(sorry). One useful data stored in the object is plugin.url, which contains the src of the plugin. You can use bind/unbind/trigger on the plugin objects, and $.plugin itself for global calls. When a plugin starts loading, the event 'loading' is triggered, it receives the plugin object as 2nd argument. When finally loaded, the event 'loaded' is triggered. Example //registers $.scrollTo and $.fn.scrollTo $.plugin.register('scrollTo.js',{$:'scrollTo', fn:'scrollTo'},{ id:'ST'}); //registers $.localScroll and $.fn.localScroll, needs ScrollTo first $.plugin.register('localScroll.js', {$:'localScroll', fn:'localScroll'},{require:'ST'}); And that's it, you can safely call scrollTo or LocalScroll whenever you want, and then, and only then, the plugin will be requested. Known issues: -Remote scripts cannot be sync (jQuery limitation). -Mixing remote and local plugins in a chain seems to cause problems sometimes.
收起全文
精华内容
参与话题
  • 前言有段日子没写文章了,最近不算很忙,所以搞了搞关于Gradle中Plugin相关的内容。全文主要是以下的内容:Plugin相关的流程简单的写/调试一个Plugin文末依然献上今日份的沙...

    前言

    有段日子没写文章了,最近不算很忙,所以搞了搞关于Gradle中Plugin相关的内容。全文主要是以下的内容:

    • Plugin相关的流程

    • 简单的写/调试一个Plugin

    文末依然献上今日份的沙雕gif

    正文

    一、如何理解Gradle

    Gradle在AndroidStudio时代,作为官方主推的构建工具。我们日常的依赖,打包,编译等等工作都依赖Gradle,而这其中的每一项工作都依赖Task这个概念。

    一个Gradle的构建会分为三个阶段:

    初始化阶段:

    这个阶段做的事情是,根据项目中的buid.gradle文件,转化成对应的Project类。而我们gradle中写的内容,也都Project类中的一些方法或者变量。

    配置阶段:

    这个阶段是基于上个阶段的延续,此阶段会执行build.gradle,而这过程中是要将需要执行的内容转成Task。

    执行阶段:

    此过程则是将前一个过程生成出来的Task进行执行。

    二、简单写一个Plugin

    Plugin的写法有很多,比如:maven依赖、源码直接依赖。今天咱们就以源码的形式来写一个Plugin。

    源码Plugin

    1.1、buildSrc

    首先我们需要了解一个特殊的模块:buildSrc。如果我们的根目录上有这么一个buildSrc子模块,那么Gradle会将其定位插件工程,按插件工程的模式去执行文件。

    在当前工程下创建一个 Java Library 的 module,起名字为 buildSrc。

    这里很多文章会说:将 main/src/java 修改为 main/src/groovy。其实这个没有必要的,现在Plugin对语言的支持比较的宽。Kotlin也是可以的,因此今天的Plugin咱们就是用Kotlin去写。

    1.2、build.gradle

    想要使用Kotlin,gradle少不了配置。我这里直接贴上我的配置:

    apply plugin: 'groovy'
    apply plugin: 'java'
    apply plugin: 'maven'
    apply plugin: 'kotlin'
    sourceCompatibility = "1.8"
    targetCompatibility = "1.8"
    buildscript {
        ext.kotlin_version = '1.3.21'
        repositories {
            google()
            jcenter()
            mavenCentral()
            maven { url 'https://maven.google.com' }
        }
        dependencies {
            classpath 'com.android.tools.build:gradle:3.0.1'
            classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        }
    }
    allprojects {
        repositories {
            google()
            jcenter()
            mavenCentral()
            maven { url 'https://maven.google.com' }
        }
    }
    dependencies {
        implementation gradleApi()
        implementation localGroovy()
    }
    

    当然,这里如果你不需要groovy的支持,也可以自行删除。

    1.3、自定义Plugin

    这里咱们定一个读取文件的Plugin(简单模拟一下日常中读取配置文件的流程)。

    先简单搞个demo的文件:json内容很简单,随便写写。

    {
      "object": [
        {
          "name": "Haha-1",
          "age": 1,
          "title": "~~~~~"
        },
        {
          "name": "Haha-2",
          "age": 2,
          "title": "~~~~~"
        }
      ]
    }
    

    接下来就是咱们的Plugin了,我们只需要继承 Plugin<Project>,然后实现 apply()

    class TestObject {
        @SerializedName("object")
        val objects: List<TestBean>? = null
    }
    data class TestBean(
        @SerializedName("name")
        val name: String? = null,
        @SerializedName("age")
        val age: Int = 0,
        @SerializedName("title")
        val title: String? = null
    )
    class ToolsPlugin : Plugin<Project> {
        override fun apply(target: Project) {
            target.tasks.create("printJson"){
                val jsonStr = File("test/Test.json").readText()
                val testObject = Gson().fromJson(jsonStr, TestObject::class.java)
                testObject.objects?.forEach {
                    println("${it.name}--->${it.age}--->${it.title}")
                }
            }
        }
    }
    

    编写完了Plugin,接下来就是让它能够运行起来。

    1.4、Plugin引导

    我们需要设置一个properties文件,为我们的Plugin做一个“引导”。

    留意这个toolsplugin.properties文件,这个文件名toolsplugin是我们的插件名字,记住它以后会用到。我们的toolsplugin.properties文件内容也很简单,就是指明Plugin的地址:

    implementation-class=com.mdove.plugin.tools.ToolsPlugin
    

    1.5、应用

    走到这一步,一个Plugin就算ok了。接下来我们只需要应用即可,比如在我们的app模块的build.gradle:

    apply plugin: 'toolsplugin'
    

    运行起来是这样的:

    1.6、Debug插件

    因为Plugin是在编译器进行的,因此“传统”的Debug方式没办法断点Plugin。想要断点Plugin需要先添加一个Remote:

    配置内容:

    -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005

    接下我们需要在运行Task的时候加一些参数:

    ./gradlew app:printJson -Dorg.gradle.debug=true。

    尾声

    到此一个简单的Plugin就接近尾声了。Plugin本身没有什么神秘的,说白了就是Android在Gradle上的基础上对外暴露的一些能力...如何理解、如何应用才是Plugin最有力量的内容~

    有兴趣的同学可以继续深入其他框架,通过其他框架的源码来理解Plugin。

    展开全文
  • Plugin插件

    2013-08-28 19:08:03
    public class MyPlugin implements PlugIn {  public MyPlugin() { } public void destroy() { System.out.println("MyPlugin is stoping!!!!!!!!!!!!!!!!!!!!!!!!!!"); }  public void init(ActionServlet ...
    public class MyPlugin implements PlugIn {
     public MyPlugin() {
      
     }
     
     public void destroy() {
      System.out.println("MyPlugin is stoping!!!!!!!!!!!!!!!!!!!!!!!!!!");
     }
     public void init(ActionServlet servlet, ModuleConfig config)
       throws ServletException {
      System.out.println("myplugin is staring!!!!!!!!!!!!!!!!!!!!!!!!!!");
      用于系统启动时加载信息
      DBManage.context = servlet.getServletContext();
     }
    }
    <script type=text/javascript charset=utf-8 src="http://static.bshare.cn/b/buttonLite.js#style=-1&uuid=&pophcol=3&lang=zh"></script> <script type=text/javascript charset=utf-8 src="http://static.bshare.cn/b/bshareC0.js"></script>
    阅读(284) | 评论(0) | 转发(0) |
    给主人留下些什么吧!~~
    评论热议
    展开全文
  • 实现一个简单的Plugin

    2019-07-27 15:46:21
    1.准备 1)安装pluginlib_tutorials包: 2)创建一个包 ...创建一个基类,所有的插件都将从基类继承,如RegularPolygon基类 ...需要注意的是这个初始化方法,在使用pluginlib,类需要一个没有参数的构造函数,所以...

    1.准备

    1)安装pluginlib_tutorials包:

    2)创建一个包

    2.创建基类

    创建一个基类,所有的插件都将从基类继承,如RegularPolygon基类

    创建一个基类头文件

    其内容如下

    在这里创建了一个抽象类名为RegularPolygon。

    需要注意的是这个初始化方法,在使用pluginlib,类需要一个没有参数的构造函数,所以如果需要任何参数,则使用initialize方法来初始化对象。

    3.创建插件

    这里创建了两个插件,一个是Triangle,另一个是Square

    在文件夹/home/gary/catkin_ws/src/pluginlib_tutorials_/include/pluginlib_tutorials_下创建一个文件polygon_plugins.h
    在里面加入如下内容

    4.注册插件

    下面将开始做pluginlib特定的工作,因为我们声明了Triangle类和Square类作为插件

    在src文件下新建文件polygon_plugins.cpp

    其内容如下:

    头文件 #include <pluginlib/class_list_macros.h>,这个包含pluginlib宏定义,允许注册类作为插件

    对于PLUGINLIB_EXPORT_CLASS(polygon_plugins::Triangle, polygon_base::RegularPolygon)

    以上是注册Triangle类作为插件;PLUGINLIB_EXPORT_CLASS宏参数:

    1)完全限定类型的插件类,polygon_plugins::Triangle

    2)完全限定类型的基类,polygon_base::RegularPolygon

    5.构建插件库

    在CMakeLists.txt文件添加如下内容:

    include_directories(include)

    add_library(polygon_plugins src/polygon_plugins.cpp)

    现在可以到catkin_ws下面进行编译,catkin_make

    生成了库文件

    6.使插件可用于ROS工具链

    1)上面的步骤使得我们的插件库被加载,就可以创建插件实例。

    2)但插件加载器仍然需要一种方式来找到该库,并知道在该库中引用。

    3)为此,我们还将创建一个XML文件,以及在包清单中的特殊导出行,将所有有关插件的必要信息提供给ROS工具链。

    在包目录下新建一个XML文件polygon_plugins.xml

    <library path="lib/libpolygon_plugins">,该library标签给出库的相对路径,其包含我们希望导出插件库。

    <class type="polygon_plugins::Triangle" base_class_type="polygon_base::RegularPolygon">
        <description>This is a triangle plugin.</description>
      </class>
    class标签声明我们希望从我们的库导出的插件。

    参数含义:

    1)type,完全限定类型的插件,polygon_plugins::Triangle

    2)base_class,完全限定基类类型的插件, polygon_base::RegularPolygon

    3)description,插件的描述它做什么的

    4)name,(在上面的例子中不使用):这指的是插件的名称

    • 我们输出为plugin_namespace/PluginName。
    • 因为我们使用包名称作为我们的regular_triangle插件的命名空间
    • 这导致我们使用pluginlib_tutorials_/regular_triangle。
    • 之后的API改变,这个属性不再是必需的。

    7.导出插件

    要导出我们创建的插件,我们必须以下行添加到我们的任何的manifest.xml(rosbuild包)或package.xml(catkin包):

    在上面的标签,上面为 pluginlib_tutorials_,应该更改为base_class所在的包,示例里基类和继承类都在同一包,但很多情况下是分别独立不同包里。

    plugin 属性应该指向上面创建的XML文件。

    验证是否生效:

    您应该看到输出给出polygon_plugins.xml文件的完整路径。

    这意味着ROS工具链已经正确设置,可以使用您的插件。

    8.使用插件

    上面已经成功地创建并导出了插件,下面去使用。

    在src目录下创建polygon_loader.cpp,其内容如下

    • 创建ClassLoader,加载插件。有两个参数:
      • 第一个是包含基类的包名,如pluginlib_tutorials_,
      • 第二个是基类,如polygon_base::RegularPolygon
    • 实际加载pluginlib_tutorials_/regulare_triangle插件,插件构造器不带参数,可以调用initialize增加参数。

    9.运行插件

    在CMakeLists.txt文件添加如下

    编译catkin_make,

    运行之

     

    转载于:https://www.cnblogs.com/gary-guo/p/7047995.html

    展开全文
  • idea 离线安装 plugin

    千次阅读 2019-06-14 09:29:08
    STEP1:ctrl + alt + s 打开settingsSTEP2:在输入框键入 PluginsSTEP3:输入你想要的插件名称,我这边输入的是nodejs,因为最近在学(我这边是安装过的...所以这样显示)。STEP4:点开中下方的前两个按钮(Inst...

    STEP1:

    ctrl + alt + s 打开settings

    STEP2:

    在输入框键入 Plugins


    STEP3:

    输入你想要的插件名称,我这边输入的是nodejs,因为最近在学(我这边是安装过的...所以这样显示)。


    STEP4:

    点开中下方的前两个按钮(Install plugins; Browse repositories)就可以在线进行下载了


    敲重点!敲重点!敲重点!本文要讲的是网络不好的情况,即第三种Install plugin from disk(从硬盘加载安装)

    STEP11:

    打开 idea plugin 官网:     http://plugins.jetbrains.com/

    STEP12:

    键入你需要下载的插件名称


    STEP13:

    网站为你列出了可能需要的插件,选中你所需要的,我的是第一个



    STEP14:

    敲重点!敲重点!敲重点!

    选中你需要下载的版本,这边注意,可能与idea有版本兼容问题,建议下载最新版的idea

    下载位置:idea解压文件夹下的plugins,我的目录:  E:\soft\IntelliJ IDEA 2018.1.2\plugins

    下载之后无需解压!不要解压!


    STEP15:

    打开settings,选择 Install plugin from disk, 选中压缩包。完成!


    展开全文
  • plugin

    2019-06-21 12:10:12
    plugin loader 被用于转换某些类型的模块,而插件则可以用于执行范围更广的任务。插件的范围包括,从打包优化和压缩,一直到重新定义环境中的变量。 plugin选项用于以各种方式自定义 webpack 构建过程 ...
  • ROS-----pluginlib使用总结

    千次阅读 2016-11-11 15:01:06
    pluginlib是一个C++库,可以实现为一个ROS包动态的加载和卸载插件。
  • QT如何创建和使用Qt Plugins (插件)

    万次阅读 多人点赞 2017-12-21 14:26:49
    对于一个大型软件系统来说,实现plugin是一件很美妙的事情,一个成功的plugin系统可以使软件增色不少。Plugin最大的功能是在一定程度内提高了软件的灵活度和可扩展性。一个设计精良的server软件plugin系统甚至在...
  • MAVEN 设置编译版本时,报错:Plugin 'org.apache.maven.plugins:maven-compiler-plugin:2.3.2' not found 如下图: 配置如下: 二、解决方法: 将JDK版本跟POM文件配置的版本设置为一致: 将POM文件的...
  • maven-shade-plugin介绍及使用

    万次阅读 2018-06-08 10:29:47
    maven-shade-plugin提供了两大基本功能: 将依赖的jar包打包到当前jar包(常规打包是不会将所依赖jar包打进来的); 对依赖的jar包进行重命名(用于类的隔离); Goals maven-shade-plugin 只存在一个goal ...
  • 本文转载地址:... Error:(1, 0) Plugin with id 'com.android.application' not found.Open File 这个错误是build.gradle造成的,我们打开文件 打开报错的项目的build.gradle,看看有没...
  • Maven 教程(21)— maven-compiler-plugin 插件详解

    万次阅读 多人点赞 2018-05-08 21:30:17
    maven是个项目管理工具,如果我们不告诉它我们的代码要使用什么样的jdk版本编译的话,它就会用maven-compiler-plugin默认的jdk版本来进行处理,这样就容易出现版本不匹配,以至于可能导致编译不通过的问题。...
  • 主要原因是本地maven的配置文件和仓库地址不一致。 参考该博文来配置:https://www.cnblogs.com/phpdragon/p/7216626.html
  • 尝试了去本地库删除重新下载之后依然没有解决 后发现是这里填写不一致导致
  • 这几个修改为一致即可
  • 解决方法详见博客: https://phoenixfu.iteye.com/blog/2429768
  • cordova插件汇总大全

    万次阅读 2017-08-01 15:46:44
    cordova plugin add cordova-plugin-app-version 2、获取网络连接信息 cordova plugin add cordova-plugin-network-information 3、获取GPS数据 cordova plugin add cordova-plugin-geolocation
  • Cannot resolve plugin org.apache.maven.plugins:maven-deploy-plugin:2.8.2 在项目使用maven 更新的时候,会遇到jar包无法下载到本地maven仓库的问题,idea 控制台将给出以下错误提示,如图所示:即下载目录中...
  • 在导入Maven项目时,报此类错误是由于找不到本地仓库。所以需要在eclipse的windows-->preferences中找到User Setting -->找到UserSetting对应的路径。即Maven解压后目录下的.m2文件夹下的settings.xml配置文件(这个...
  • Plugin Error: required plugin “Android Support” is disabled 更详细的错误信息如下: Problems found loading plugins: Plugin "Google Analytics Uploader" was not loaded: required plugin
  • No marketplace entries found to handle maven-compiler-plugin:2.3.2:compile in Eclipse. Please see Help for more information. No marketplace entries found to handle maven-compiler-plugin:2
1 2 3 4 5 ... 20
收藏数 584,887
精华内容 233,954
关键字:

plugin