如何在浏览器中加载day.js插件

时间:2020-10-12 13:47:24

标签: javascript dayjs

我正在尝试在客户端加载两个day.js插件。但这似乎不起作用...我在做什么错?

Pug / Jade文件

script(defer, src='javascript/external/day.js')
script(defer, src='javascript/external/day_minmax.js')
script(defer, src='javascript/external/day_isbetween.js')

script(defer, dayjs.extend(window.dayjs_plugin_minmax))
script(defer, dayjs.extend(window.dayjs_plugin_isbetween))

console输出

dayjs.max()
Uncaught TypeError: dayjs.max is not a function

已加载的js插件文件来自:

https://unpkg.com/dayjs@1.9.1/plugin/isBetween.js

https://unpkg.com/dayjs@1.9.1/plugin/minMax.js

1 个答案:

答案 0 :(得分:1)

这是index.html文件中的一个有效示例,您可以在根Pug / Jade文件中执行相同的操作。另外,我使用的是CDN版本,但是您也可以从下载它们的文件夹中导入它们。

import cv2, numpy as np import time, random, threading, queue image_height = 256 image_width = 512 save_nsec = 20 dpi, fps = 100, 15 # Make results reproducible and deterministic np.random.seed(0) random.seed(0) def live_stream(): last = 0. pos = 0 while True: a = np.random.uniform(low = -1., high = 1., size = random.randint(1, 30)).astype(np.float64).cumsum() + last yield a, pos, pos + a.size - 1 pos += a.size last = a[-1] time.sleep(random.random() * 2.2 / fps) q0 = queue.Queue() def stream_fetcher(): for e in live_stream(): q0.put(e) threading.Thread(target = stream_fetcher, daemon = True).start() aranges = np.arange(image_height, dtype = np.int32)[:, None] q1 = queue.Queue() def renderer(): def normalized(data, data_min, data_max, maximum_value): nomamized_data = maximum_value * ((data - data_min) / (data_max - data_min)) return nomamized_data prev_image = np.zeros((image_height, 0), dtype = np.uint8) prev_vols = np.zeros((0,), dtype = np.float64) while True: data = [] data.append(q0.get()) try: while True: data.append(q0.get(block = False)) except queue.Empty: pass data_vols = [e[0] for e in data] data_minx, data_maxx = data[0][1], data[-1][2] vols = np.concatenate(data_vols)[-image_width:] prev_vols = prev_vols[-(image_width - vols.size) or prev_vols.size:] concat_vols = np.concatenate((prev_vols, vols))[-image_width:] vols_min, vols_max = np.amin(concat_vols), np.amax(concat_vols) if prev_vols.size > 0 and (vols_min < np.amin(prev_vols) - 10 ** -8 or vols_max > np.amax(prev_vols) + 10 ** -8): vols = concat_vols prev_image = prev_image[:, :-prev_vols.size] prev_vols = prev_vols[:0] vols_norm = normalized( data = vols, data_min = vols_min, data_max = vols_max, maximum_value = image_height, ) image = (aranges < vols_norm.astype(np.int32)[None, :]).astype(np.uint8) * 255 whole_image = np.concatenate((prev_image, image), axis = 1)[:, -image_width:] q1.put((whole_image, data_maxx - whole_image.shape[1] + 1, data_maxx, vols_min, vols_max)) prev_image = whole_image prev_vols = concat_vols threading.Thread(target = renderer, daemon = True).start() def visualizer(): import matplotlib.pyplot as plt, matplotlib.animation def images(): while True: data = [] data.append(q1.get()) try: while True: data.append(q1.get(block = False)) except queue.Empty: pass minx = min([e[1] for e in data]) maxx = min([e[2] for e in data]) miny = min([e[3] for e in data]) maxy = min([e[4] for e in data]) image = np.concatenate([e[0] for e in data], axis = 1)[:, -image_width:] image = np.pad(image, ((0, 0), (image_width - image.shape[1], 0)), constant_values = 0) image = np.repeat(image[:, :, None], 3, axis = -1) yield image, minx, maxx, miny, maxy it = images() im = None fig = plt.figure(figsize = (image_width / dpi, image_height / dpi), dpi = dpi) def animate_func(i): nonlocal it, im, fig image, minx, maxx, miny, maxy = next(it) print(f'.', end = '', flush = True) if im is None: im = plt.imshow(image, interpolation = 'none', aspect = 'auto') else: im.set_array(image) im.set_extent((minx, maxx, miny, maxy)) return [im] anim = matplotlib.animation.FuncAnimation(fig, animate_func, frames = round(save_nsec * fps), interval = 1000 / fps) print('saving...', end = '', flush = True) #anim.save('result.mp4', fps = fps, dpi = dpi, extra_args = ['-vcodec', 'libx264']) anim.save('result.gif', fps = fps, dpi = dpi, writer = 'imagemagick') print('saved!', end = '', flush = True) plt.show() threading.Thread(target = visualizer, daemon = True).start() while True: time.sleep(0.1) window.dayjs_plugin_minmax可能是问题

window.dayjs_plugin_minMax

这是结果:

Result image