如何在实际示例中使用 javascript 模块模式?

2024-02-22

我正在尝试理解 JavaScript 模块模式。我已经看过它应该是什么样子的示例,但我不明白如何使用它。

例如,这里发生了一些事情:

$('input#share').on("click", function() {

    $('.loading').html('<img class="remove_loading" src="/graphics/loading.gif" />');

    var message = $(".wallmessage").val();

    if (message == ""){
        $("#messageempty").jmNotify();
        $('.remove_loading').remove();
    } else {
        addMessage(message);
    }

    return false;
});


function addMessage(message)
{
    $.ajax({
        url: '/test',
        type: 'POST',
        dataType: "json",
        data: {'message' : message},
        success: function(data) {
                ...
        },
        error: function() {
            ...
        }
    });
}

我如何使用上面的示例:

var myTest = function() {
    var selectId;
    function addMessage () {
        // ...
    }
    return { // public interface
        publicMethod1: function () {
            // all private members are accesible here
        }
    };
};
var start = myTest();

我在哪里添加点击事件,声明我的变量,添加addMessage函数与ajax调用。并致电addMessage功能?我必须把所有东西都包起来吗$(document).ready(function()?

有人能为我解释一下吗?

Thanks


这是一个相当固执己见的主题,但我会这样做(不完全了解你的完整应用程序及其用途),有点像这样:

var myApp = (function() {

  var someElement = $("#foo"); //some element I know I'll use lots

  var addMessage = function(message) {
    $.ajax({
      url: '/test',
      type: 'POST',
      dataType: "json",
      data: {'message' : message},
      success: function(data) {
              ...
      },
      error: function() {
          ...
      }
    });
  };

  var inputClick = function(event) {
    event.preventDefault();
    //depending on if you'll reuse these selectors throughout the app I might have these as variables
    $('.loading').html('<img class="remove_loading" src="/graphics/loading.gif" />');

    var message = $(".wallmessage").val();

    if (message == ""){
      $("#messageempty").jmNotify();
      $('.remove_loading').remove();
    } else {
      addMessage(message);
    }
  };

  var bindFunctions = function() {
    $("input#share").on("click", inputClick)
  };

  var init = function() {
    bindFunctions();
  };

  return {
    // EDIT: 27/12/16 - need to return init for 'usage' example to work
    init: init,
    addMessage: addMessage
    //anything else you want available
    //through myApp.function()
    //or expose variables here too
  };


})();

//usage

myApp.init();

您的模式的原始代码是错误的,该功能必须有()最后,使其成为一个函数立即调用,然后执行,通过return statement.

您可能希望与我所做的略有不同,这只是一个基本想法,但我希望它可以帮助您入门。

不久前有人提出了与此模式相关的问题,并且我回答了 https://stackoverflow.com/questions/6562679/what-is-the-use-of-return-statement-inside-a-function/6562710#6562710解释我们为什么使用(function() {})();以及如何return声明在这种情况下有效,如果您对此感到有点困惑,那么也可能值得一读。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在实际示例中使用 javascript 模块模式? 的相关文章

  • div 准备好后如何调用函数?

    我的 javascript 文件中有以下内容 var divId divIDer jQuery divId ready function createGrid Adds a grid to the html html 看起来像这样 div
  • 如何从 github 安装需要构建步骤的 npm 包,例如什么时候分叉一个库?

    假设您使用类似的库vue3 datepicker https www npmjs com package vue3 datepicker 您意识到您需要自定义某些内容 并且作为第一步 您想要使用它的自定义分支 问题是 当包被推送到 npm
  • 如何在 Angular 中实现全局加载器

    我有一个全局加载器 其实现如下 核心模块 router events pipe filter x gt x instanceof NavigationStart subscribe gt loaderService show router
  • 如何使用 file:///F:/foldername 访问 ajax 中的本地文件夹?但它适用于 http://

    在这里 我使用以下代码使用 AJAX jQuery 动态创建文件名列表 window load function var fileExt csv document ready function ajax url file F foldern
  • Nightmare.js 截图缓冲区长度 0

    我正在运行一个 night js 脚本 我试图在其中截取页面上多个元素的屏幕截图 The first元素被捕获得很好 但折叠下方的所有其他元素都以零长度捕获 我正在努力调试这个问题 任何帮助将非常感激 基本上这个脚本会遍历一个页面并选择al
  • 为什么此 Firebase 可调用函数不返回值?

    我有一个应返回值的可调用函数 但唯一返回的是 null 以下是该功能的当前版本 我也尝试过回报第一个承诺 原来的once调用 最后在另一个then返回 GUID 在这种情况下它实际上返回了数据 但它立即返回并且 GUID 为空 我怎样才能实
  • YouTube 播放器 API:getDuration()、getCurrentTime()、getVideoData() 不起作用

    对于我的应用程序 我尝试使用 YouTube Iframe 播放器 API 来播放视频 并允许用户更改视频而无需重新加载页面 我通过使用来实现这一点player loadVideoById video id 方法 通过YouTube视频id
  • Disqus:使用 jQuery 成功后更改标题

    Disqus 根据请求自动放置定义的标题 例如 添加新评论 我尝试在ready 上使用jquery更改它的值 dsq new post h3 text Paticipa con tu cuenta favorita 没有成功 我如何知道 d
  • 对 UPDATE 行的 POST 请求

    我是 javascript 的新手 所以我正在寻找一些帮助来创建一种拖放地理编码标记的方法 以允许交互式更改地址 我相信通过更新 LOCATION 列行可以实现这一点 第一步是 发送 POST 请求 对吧 好吧 所以我想问是否有人可以给我看
  • Opera Mobile 9.7 Beta 设置焦点 [重复]

    这个问题在这里已经有答案了 我们使用手持式扫描仪将物品移入和移出库存 扫描仪运行一个 ASP 页 该页提交表单以移动项目 我们最近购买了一台运行 Windows Mobile 6 1 的新扫描仪 很快就意识到 Mobile IE 完全没用
  • React Native v0.71.8 React-native-vector-icons 你看不到的图标

    我在用react native版本v0 71 8 我安装了react native vector icons库 但图标未显示 似乎链接在最新版本的 React Native 中不再起作用 所以我按照说明进行操作 但它不再编译 出现以下错误
  • 防止 Firefox Web 通知自动关闭

    我已经在 Firefox 中将 Web 通知与服务器发送的 DOM 事件结合使用 不幸的是 通知在大约两到三秒后消失 我更喜欢 Chrome 的方法 即让消息保持可见 在任何给定时间最多显示三个 直到用户单击通知 这是我所拥有的 windo
  • 以编程方式在 Highcharts 中使用缩放绘制矩形和线条

    我正在使用 Highcharts 进行一些编程绘图Highcharts Renderer http api highcharts com highcharts Renderer using path and rect 在下面的代码中 我手动
  • 如何将多个画布元素放入一个画布元素中?

    我有多个由 JavaScript 创建的画布元素 我的问题是 如何将多个画布元素放入一个画布元素 干得好 JSfiddle http jsfiddle net Allendar UqxCY 它会抓取每个画布并将它们做成 PNG 的 访问缓冲
  • 将 async 和await 与export const 一起使用

    我无法完成这项工作 它说 await 是一个保留字 是的 当然是 而且我想使用它 怎么了 export const loginWithToken async gt return dispatch gt dispatch type SESSI
  • 电子节点集成不起作用,也普遍奇怪的电子行为[重复]

    这个问题在这里已经有答案了 我是 Electron 的新手 我一直在努力让它工作 我遇到了无法解释的行为 所以这里有一个总结 我无法让 Electron 和 html 之间的通信正常工作 即使我有nodeIntegration true 网
  • 构造函数可以返回什么值来避免返回 this ?

    确切的情况是什么 returnJavascript 中的语句可以返回除this当使用构造函数调用时new关键词 Example function Foo return something var foo new Foo 如果我没记错的话 如
  • iPhone Mobile Safari:强制键盘打开

    这是一个 HTML CSS JS jQuery iPad 应用程序 我有一个按钮 可以向下滑动输入表单 我想让用户将注意力集中在输入上 然后启动键盘 这是我正在处理的 但不起作用 myFormField focus 这确实集中了输入 但无法
  • 阻止 Chrome 扩展程序的 popup.html 自动打开

    我正在创建一个 Chrome 扩展程序 其中包含background html每分钟从 API 请求一次信息的文件 收到信息后 它会发送消息popup html弹出窗口使用 JSON 信息将新的 HTML 元素附加到弹出窗口的主体上 问题是
  • 使用 ASP.Net 和 Ajax 的登录页面

    我正在尝试使用 html ajax 和 ASP NET 制作登录页面 数据确实传递给 ajax 函数 但是当我调试 asp 页面时 用户名和密码以 NULL 发送 该代码应该获取用户名和密码 然后返回用户 ID html页面 div Use

随机推荐

  • 回收和赋值函数(`split<-`)

    有人可以解释一下这一行 R 代码是如何工作的吗 split dat f lt lapply split dat f max 我以为这只是一个回收规则 但实际上我无法理解 数据示例 dat lt c 1 2 3 100 200 300 f l
  • 将 pyodbc 连接到 Postgres

    尝试使用 pyodbc 连接到 Postgres 我可以使用 isql 连接到数据库 echo select 1 isql v my connector Returns Connected sql statement help tablen
  • 如果 URL 包含单词则隐藏 div

    如果页面的 url 包含某个单词 我需要隐藏一个 div 感谢这个网站 我已经能够成功地找到该网址是否包含该单词 这段代码的工作原理 但由于某种原因 隐藏 div 不起作用 如下所示 div div
  • 如何将 SVG 转换为 png 或 jpg

    我尝试过使用batik 但我得到的是空 png 文件 我还包含了所有必需的罐子 我的代码是 import org apache batik transcoder image PNGTranscoder import org apache b
  • 在 ChartJS 中对标签进行换行时,工具提示中出现不需要的逗号

    我有一些标签很长的图 我使用在此站点中找到的答案将标签换成新行 这是我的标签的示例 labels Utensilios para escrita e artes Faz de conta Jogos Materiais n o estrut
  • Swift 结构到 NSData 并返回

    我有一个包含一个结构体和一个结构体的结构体NSObject我想序列化为NSData object struct Packet var name String var index Int var numberOfPackets Int var
  • 如何在通用标头中 typedef 实现定义的结构?

    我有一个 C 项目 旨在可移植到各种 PC 和嵌入式 平台 应用程序代码将使用具有特定于平台的实现的各种调用 但共享通用 通用 API 以帮助实现可移植性 我正在尝试确定声明函数原型和结构的最合适方法 到目前为止 这是我想到的 main c
  • 关注 MongoDB 变更流

    我们希望我们的 Go 应用程序能够侦听集合上的数据更改 因此 在谷歌搜索解决方案时 我们遇到了 MongoDB改变流 https docs mongodb com v3 6 changeStreams 该链接还展示了 Python Java
  • 如何创建滑动布局,如 Android 主菜单?

    我需要创建一个具有 4 个视图的应用程序 我需要通过触摸并向左或向右移动 无按钮 从一个视图传递到另一个视图 我想要的效果与当您从一个页面传递到另一个页面时在 android 主菜单中导航时看到的效果相同 我已经测试了 ViewFlippe
  • 对瞬态变量注解@Basic

    我有一个 POJO 类 其中包括 持久特性 瞬态特性 在编写 HQL 时 我考虑了两者 持久属性和瞬态属性 IE HQL 类似select persistent properties transient prop from Pojo cla
  • JavaScript 中仅允许数字[重复]

    这个问题在这里已经有答案了 可能的重复 HTML 文本输入仅允许数字输入 https stackoverflow com questions 469357 html text input allow only numeric input 我
  • MySQL Workbench 无法在 Windows 上打开

    我已经下载了 Workbench 的免安装便携式版本 当我运行 exe 文件 在 Windows XP 上 时 没有任何反应 它需要运行一些 MySQL 吗 我认为它是独立的 对吗 我有 MySQL 的 XAMPP 有什么依赖性等吗 您需要
  • Python:tkinter 上的 Z 索引

    是否存在一种方法来指定 Tkinter 画布元素的深度 例如 HTML 的 z index 目前 我发现让元素按照我想要的方式重叠的唯一方法是按特定顺序创建它 问题是某些元素必须在其他元素之后创建 但它们也应该具有较低的 z index 先
  • 重新安装节点后:“找不到模块‘internal/util/types’”

    因此 几个月前我从计算机中删除了节点 我认为主要是 今天我重新安装了它 Node 工作正常 但是当我尝试测试 npm 时 我收到以下消息 npm module js 549 throw err Error Cannot find modul
  • 在 Java 中操作和存储日期的最佳实践是什么? [复制]

    这个问题在这里已经有答案了 操作和存储日期的最佳实践是什么 例如在企业 Java 应用程序中使用 GregorianCalendar 寻求反馈 我会将任何好的答案整合为其他人可以使用的最佳实践 最佳实践通常是准确的NOT考虑重日期对象 但存
  • Spring Security:多个 HTTP 配置不起作用

    我正在尝试使用 Spring Security 并且有一个用例 我希望不同的登录页面和不同的 URL 集得到保护 这是我的配置 Configuration Order 1 public static class ProviderSecuri
  • 如何解决 CALayer 支持的文本中文本渲染不佳的问题

    我有一些可变文本NSTextField呈现在CALayer背景视图 作为一个CALayer不支持其上任何文本的文本渲染的子像素别名 该文本看起来很垃圾 一些谷歌搜索揭示了其原因 并且文本必须渲染到不透明背景上才能启用 SPA 在这种情况下
  • 在 PHP 中发送 HTTP 响应代码的最佳方法

    通过阅读 php 规范和 Stack Overflow 上的其他问题 我可以看到从 PHP 发送 HTTP 响应代码的三种方法 header HTTP 1 0 404 Not Found A B C header false 404 C D
  • JavaScript 有时在 android 的 webview 中不起作用

    我在我的应用程序中放置了一个 webview 来访问包含一些 JavaScript 函数的网页 我的目的是当用户单击网页中的链接时 它将在应用程序中启动一个新的活动 我写了 webSettings setJavaScriptEnabled
  • 如何在实际示例中使用 javascript 模块模式?

    我正在尝试理解 JavaScript 模块模式 我已经看过它应该是什么样子的示例 但我不明白如何使用它 例如 这里发生了一些事情 input share on click function loading html img class re