首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >requirejs为什么定义()中的加载模块可以工作,但是在require()中却不能工作

requirejs为什么定义()中的加载模块可以工作,但是在require()中却不能工作
EN

Stack Overflow用户
提问于 2014-05-07 08:20:25
回答 1查看 495关注 0票数 0

代码blow不起作用,错误消息是:

未加载错误:尚未为上下文:"text!templates/bookTemplate.html_unnormalized2“加载模块名_。使用要求([])

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
define(['backbone', 'underscore', 'jquery'], function (Backbone, _, $) {
    var bt = require('text!templates/bookTemplate.html');
    var BookView = Backbone.View.extend({
        initialize: function () {
            this.render();
        },
        render: function () {
            var template = _.template(bt, {
                name: 'secret book'
            });
            this.$el.html(template);
        }
    });
    return BookView;
});

然后我移动"text!templates/bookTemplate.html“来定义(),它可以工作!以下是工作代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   define(['backbone', 'underscore', 'jquery', 
'text!templates/bookTemplate.html'], function (Backbone, _, $, bt) {
        // var bt = require('text!templates/bookTemplate.html');
        var BookView = Backbone.View.extend({
            initialize: function () {
                this.render();
            },
            render: function () {
                var template = _.template(bt, {
                    name: 'secret book'
                });
                console.info('template', template);
                this.$el.html(template);
            }
        });
        return BookView;
    }); // it is working

据我的理解,在加载模块时,require()和define()是相同的。这是正确的吗?你能帮我解释一下为什么它在定义中工作,而在必需()中不起作用吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-07 14:38:53

您正在使用字符串文本调用require。当您像这样调用require时,它在伪同步方式中工作。它的作用类似于同步调用,因为它将立即返回模块。它是伪同步的,因为必须在调用伪同步形式的require之前加载模块。

所以你可以这么做:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
define(['backbone', 'underscore', 'jquery', 'text!templates/bookTemplate.html'], 
  function (Backbone, _, $) {
    var bt = require('text!templates/bookTemplate.html');

而且它可以工作,因为模块将在require执行之前加载。或者您可以使用您在第二个代码片段中显示的方法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
define(['backbone', 'underscore', 'jquery', 
    'text!templates/bookTemplate.html'], function (Backbone, _, $, bt) {

或者您可以使用CommonJS包装:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
define(function(require, exports, module) {
    var Backbone = require('backbone');
    var _ = require('underscore');
    var jquery = require('jquery');
    var bt = require('text!templates/bookTemplate.html');

此包装工作正常,因为RequireJS将在运行时将其转换为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
define(["require", "exports", "module", "backbone", "underscore", "jquery",
        "text!templates/bookTemplate.html"], function(require, exports, module) {
    var Backbone = require('backbone');
    var _ = require('underscore');
    var jquery = require('jquery');
    var bt = require('text!templates/bookTemplate.html');

在执行模块之前。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23523143

复制
相关文章
Axios 取消重复请求
项目地址:https://github.com/Ewall1106/mall 有什么用? 当用户频繁点击在短时间内发送多个 ajax 请求,但是由于网络原因服务器数据无法及时响应返回,这时候,就会有可能造成前端页面数据不匹配的情况。 具体场景来说,在用户网速不好的情况下的比如搜索框 onchange 事件的模糊搜索、触底刷新请求列表数据、tab 栏的高频切换等等。 再者,这样也浪费服务器资源,也是性能优化的一种必要手段。 基本使用 官网地址:Axios-CancelToken 官网的基本示例如下。 c
Ewall
2020/11/12
1.5K0
如何优雅处理重复请求/并发请求?
一些用户请求在某些情况下是可能重复发送的,如果是查询类操作并无大碍,但其中有些涉及写入操作,一旦重复了,可能会导致很严重的后果。例如交易接口如果重复请求,可能会重复下单。
java进阶架构师
2021/07/08
4.8K1
如何优雅处理重复请求/并发请求?
优雅地处理重复请求(并发请求)
点击上方“芋道源码”,选择“设为星标” 管她前浪,还是后浪? 能浪的浪,才是好浪! 每天 10:33 更新文章,每天掉亿点点头发... 源码精品专栏 原创 | Java 2021 超神之路,很肝~ 中文详细注释的开源项目 RPC 框架 Dubbo 源码解析 网络应用框架 Netty 源码解析 消息中间件 RocketMQ 源码解析 数据库中间件 Sharding-JDBC 和 MyCAT 源码解析 作业调度中间件 Elastic-Job 源码解析 分布式事务中间件 TCC-Transaction
芋道源码
2022/03/24
9970
如何优雅地处理重复请求(并发请求)
对于一些用户请求,在某些情况下是可能重复发送的,如果是查询类操作并无大碍,但其中有些是涉及写入操作的,一旦重复了,可能会导致很严重的后果,例如交易的接口如果重复请求可能会重复下单。 重复的场景有可能是: 黑客拦截了请求,重放 前端/客户端因为某些原因请求重复发送了,或者用户在很短的时间内重复点击了 网关重发 …. 本文讨论的是如何在服务端优雅地统一处理这种情况,如何禁止用户重复点击等客户端操作不在本文的讨论范畴。 利用唯一请求编号去重 可能会想到的是,只要请求有唯一的请求编号,那么就能借用Redis做这个去
程序猿DD
2022/04/11
5760
如何优雅地处理重复请求(并发请求)
对于一些用户请求,在某些情况下是可能重复发送的,如果是查询类操作并无大碍,但其中有些是涉及写入操作的,一旦重复了,可能会导致很严重的后果,例如交易的接口如果重复请求可能会重复下单。
用户1263954
2022/05/23
1.1K0
如何优雅地处理重复请求(并发请求)
如何优雅地处理重复请求(并发请求)
你可能会想到的是,只要请求有唯一的请求编号,那么就能借用Redis做这个去重——只要这个唯一请求编号在redis存在,证明处理过,那么就认为是重复的
用户2781897
2020/12/15
1.4K0
LeetCode - 重复 N 次的元素
原题地址:https://leetcode-cn.com/problems/n-repeated-element-in-size-2n-array/
晓痴
2019/08/06
7650
LeetCode - 重复 N 次的元素
webapi避免http重复请求
route过滤 添加路由过滤,在过滤器中判断sessionid或者cookie session session服务端文件,存储guid或者用户账户(操作简单,增加服务器压力) session管理参考:https://www.cnblogs.com/wxdlut/p/9237577.html cookie cookie浏览器端,浏览器请求附带cookie,cookie设置超时管理连接状态) 路由过滤实现方式 golang gin.Default().Use(func() gin.HandlerFunc{
sofu456
2021/12/06
8970
封装 axios 取消重复请求
在我们web开发过程中,很多地方需要我们取消重复的请求。但是哪种场合需要我们取消呢?我们如何取消呢?带着这些问题我们阅读本文。
coder_koala
2021/01/06
1.7K0
ExcelVBA生成不重复n位的n个数字
'使用方法:call rnd_n_n(位数,个数,存放位置)如:Call rnd_n_n(10, 100, "a1")
哆哆Excel
2022/10/25
4460
ExcelVBA随机生成不重复的N个N位数文本
效果看图 【代码】 自定义函数1 '随机生成不重复指定位数文本,用法:brr=RndDigitText(位数, 个数) '.range("A1").Resize(UBound(brr), 1) = brr Function RndDigitText(di As Integer, number As Integer) Dim d As Object 'New Dictionary
哆哆Excel
2022/10/31
5080
961. 重复 N 次的元素
在大小为 2N 的数组 A 中有 N+1 个不同的元素,其中有一个元素重复了 N 次。 返回重复了 N 次的那个元素。
Michel_Rolle
2021/02/25
2.5K0
java防止接口重复请求_前端防止重复提交
对于一些新增数据的接口通常需要进行接口的防重复提交保护,如:用户账号注册、用户下单、用户发帖等等类似的应用场景。 防重复提交主要应用场景是避免用户短时间内由于误操作导致同一份数据被保存多次所带来的问题,如果被保存的数据内容存在唯一标识限制则可以选择不使用防重复提交,在业务侧保证数据的唯一性即可。 注意:防重复提交只能防止短时间内用户的误操作导致插入重复数据的问题,如果需要数据的唯一性还是需要在业务中自行处理。
全栈程序员站长
2022/09/27
2K0
AJAX请求重复发送问题
在进行 AJAX(Asynchronous JavaScript and XML)请求时,我们有时会遇到请求重复发送的问题。这可能会导致不必要的请求重复执行,增加服务器负载和网络带宽消耗,并且可能对应用程序的性能和用户体验产生不良影响。
堕落飞鸟
2023/05/18
1.2K0
Axios使用CancelToken取消重复请求
处理重复请求:没有响应完成的请求,再去请求一个相同的请求,会把之前的请求取消掉
明知山
2023/08/18
4020
Axios使用CancelToken取消重复请求
SpringBoot如何处理重复请求?
日常业务开发中,处理重复请求应该是我们需要经常注意的,那么在Spring Boot中,防止重复请求的方法可以通过以下几种方式实现:
跟着可乐学技术
2023/04/27
9470
get 和 post 重复请求详解
适用于频繁触发并且需要给予用户一些反馈的场景,如:resize、scroll、mousemove
ruochen
2021/12/16
3.5K0
使用Vagrant在几秒钟内调试内核
所有Windows内核黑客(从初学者到专业人士)都知道,设置和管理用于内核调试的虚拟机可能很耗时。Vagrant是一个免费的开源工具,可以自动创建和自动化VM。这篇文章将向您介绍Vagrant,以及如何利用其功能自动执行我们的内核调试设置。
franket
2021/01/05
2.9K0
使用原生 JavaScript 在页面加载完成后处理多个函数
网页中的 JavaScript 脚本运行是需要通过事件去触发的。一般的做法就是在网页中,直接编写几个函数,有的在代码被加载的时候就被浏览器处理,或者使用类似下面的代码来触发实现函数的相关功能。
Denis
2023/04/15
2.8K0
iOS多个网络请求完成后执行下一步
在开发中,我们很容易遇到这样的需求,需要我们同时做多个网络请求,所有网络请求都完成后才能进行下一步的操作。如下载多个图片,下载完了才能展示。 今天我们就来研究一下这个问题的解决方案。 1.首先,我们创建一个项目,然后做一般性的做法,不做任何处理去连续请求一个接口10次: 先在viewDidLoad中创建第一种情况. //1.无处理 UIButton *Btn1 = [UIButton buttonWithType:UIButtonTypeCustom]; Btn1.frame = CGRec
清墨
2018/05/07
3K0

相似问题

重复bash命令n秒钟

22

RXJava + Retrofit.每n秒钟重复请求一次

16

重复函数执行n秒钟

44

如何每N秒钟重复运行bash脚本?

28

angular2调用http.get请求打开文件

40
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文