Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将缩小的jQuery插件转换为普通JavaScript插件_Javascript_Jquery_Angularjs_Minify - Fatal编程技术网

将缩小的jQuery插件转换为普通JavaScript插件

将缩小的jQuery插件转换为普通JavaScript插件,javascript,jquery,angularjs,minify,Javascript,Jquery,Angularjs,Minify,我正在运行一个项目,人们可以在地图上找到医生,并在线预订 之前我决定使用Angularjs并更改整个项目,所以我不得不忘记我以前使用过的一些jQuery插件 **问题**: 我正在使用一个jQuery插件,它可以与GoogleMapAPI()配合使用,我在AngularJS中没有找到任何其他可以与这个插件相比的东西 所以我只能在我的站点中同时使用jquery和angular以及这个插件,但我不知道,我觉得同时使用jquery和angular是错误的,因为我认为这会使我的第一个负载很重 **问题:

我正在运行一个项目,人们可以在地图上找到医生,并在线预订

之前我决定使用Angularjs并更改整个项目,所以我不得不忘记我以前使用过的一些jQuery插件

**问题**:

我正在使用一个jQuery插件,它可以与GoogleMapAPI()配合使用,我在AngularJS中没有找到任何其他可以与这个插件相比的东西

所以我只能在我的站点中同时使用jquery和angular以及这个插件,但我不知道,我觉得同时使用jquery和angular是错误的,因为我认为这会使我的第一个负载很重

**问题:**

1-是否可以将此插件转换为普通Javascript,这样我就可以在我的站点中省略Jquery

2-如果没有,我能做什么


3-我可以使用RequireJS在我的站点中加载jquery和这个插件吗?(我不知道如何:()

将min.js文件转换为您可以使用的normal.js 但它只是设置了表格和空格,并使脚本可读

例如,此脚本:

var a={log:function(){try{var e=Array.prototype.slice.call(arguments);if(typeof e[0]==="string"){if(/[\{\}]/.test(e[0])&&e.length>1){var t=e.length>2?e.slice(1):e[1];return console.log(this.text(e[0],t))}}return console.log.apply(console,e)}catch(n){}}}
将是:

var a = {
    log: function () {
        try {
            var e = Array.prototype.slice.call(arguments);
            if (typeof e[0] === "string") {
                if (/[\{\}]/.test(e[0]) && e.length > 1) {
                    var t = e.length > 2 ? e.slice(1) : e[1];
                    return console.log(this.text(e[0], t))
                }
            }
            return console.log.apply(console, e)
        } catch (n) {}
    }
}

我不知道Landcarte插件,所以我无法帮助您解决问题1

如果您想初始化jquery插件,但它不工作,那么问题的一个常见原因是DOM还没有准备好

要解决此问题,有三种选择:

方法1在指令的link属性内初始化插件。在link函数中,指令元素的子元素已经编译并链接。如果插件仅依赖于元素的子元素为DOM就绪,则此选项适用

  app.directive('myDirective', function(){
          return {
                link: function(scope, element,attr){
                     element.plugin();
                }
          }
  });
方法2使用$evalAsyc,该方法在编译和链接阶段之后但在呈现阶段之前运行。如果插件依赖于整个页面已准备好DOM,则使用此方法,但表达式是否已呈现并不重要

  app.directive('myDirective', function(){
          return {
                link: function(scope, element,attr){
                       scope.$evalAsync(function(scope){
                              element.plugin();
                       });
                }
          }
  });
  app.directive('myDirective', function($timeout){
          return {
                link: function(scope, element,attr){
                       $timeout(function(){
                              element.plugin();
                       });
                }
          }
  });
方法3使用$timeout,该方法在呈现阶段后运行。如果插件依赖于整个页面已准备好DOM,并且所有表达式都已呈现,请使用此方法

  app.directive('myDirective', function(){
          return {
                link: function(scope, element,attr){
                       scope.$evalAsync(function(scope){
                              element.plugin();
                       });
                }
          }
  });
  app.directive('myDirective', function($timeout){
          return {
                link: function(scope, element,attr){
                       $timeout(function(){
                              element.plugin();
                       });
                }
          }
  });

根据插件的不同,这些选项中的一个应该适合您。选择一个至少满足插件需要的选项-即选择选项1、选项2、选项3,但最终选择一个有效的选项。

Landcarte也可以在没有jQuery的纯JS代码中使用。映射可以通过显式调用<代码>at.geo.Map类构造函数:

var container = document.getElementById("map");
var map = new at.geo.Map(container);

该类在.

中提到过,如何将jquery函数转换为普通的JS?可以在jquery中完成的任何事情都可以在纯JavaScript中完成。(jquery就是这样做的。)问题标题与问题描述不匹配。您是否正在尝试取消缩小jquery插件?还是正在尝试使jquery插件在angularjs中工作?