当前位置: 首页 > news >正文

在jsPsych中使用Vue

在这里插入图片描述

jspsych 介绍

jsPsych是一个非常好用的心理学实验插件,可以用来构建心理学实验。具体的就不多介绍了,大家可以去看官网:https://www.jspsych.org/latest/

但是大家在使用时就会发现,这个插件只能使用js绘制界面,或者说传一段html代码,就是不支持任何现代化的前端框架。在如今的习惯了组件化的前端看来是非常的难受,代码复用性非常差,编程体验也不好。

jspsych-vue插件介绍

今天给大家推荐的一个组件 jspsych-vue就是为了解决这个问题而设计的。下面简单介绍下如何使用。

创建vue工程

使用npm create vue创建就可以。这里就不多赘述了。

安装

使用yarn或者npm安装都可以:

yarn add jspsych-vue

导入样式

需要在main.js中导入样式:

import 'jspsych/css/jspsych.css' //这里导入
import { createApp } from 'vue'
import App from './App.vue'const app = createApp(App)
app.mount('#app')

使用

在App.vue中,使用Jspsych创建一个渲染实验的位置,比如:

<script setup>
import JsPsychVue from "jsPsych-vue";
var instance;
const init = e => instance = e;
</script><template><JsPsychVue :options="options" @init="init"></JsPsychVue></template>

这里就顺利拿到了jspsych的实例instance。下面就和jspsych原生的一样,定义一个timeline,然后run就可以。

import jsPsychImageKeyboardResponse from '@jspsych/plugin-image-keyboard-response'onMouted(()=>{const timeline = [type: jsPsychImageKeyboardResponse]jspsych.run(timeline)
})

看到这里可能就有人问了,我这样写和原生的jspsych有什么区别???

下面就是神奇的地方,你可以用一个组件代替plugin,需要做的就是导出一个info就可以。

例子:

<template>
<div> {{ props.hello }} </div>
<button @click="handleClick">点击跳转</button>
</template>
<script setup lang="ts">
import { JsPsych } from "jspsych";
import { inject } from "vue";const jsPsych: JsPsych = inject('jsPsych')!
const props = defineProps(['trial', 'on_load'])const handleClick = () => jsPsych.finishTrial()defineOptions({info: {name: 'hello world',parameters: {msg: {type: String,default: 'hello'}}}
})
</script>

简单来说,需要导出一个info对象,告诉jspsych需要传入什么参数,这个参数可以在timeline里定义。然后也没有trial函数了,在轮到这个trial的时候,会自动挂载这个组件,然后执行setup方法。把之前trial函数的内容放在setup中就可以。

最后,不要忘记调用jspsych.finishTrial来结束当前的trial。

用了这个组件,可以随心所欲的在jspsych中使用vue的众多UI库了!

最后放上仓库地址,觉得有帮助的小伙伴可以点点star!https://github.com/HGGshiwo/jspsych-vue.git

http://www.lryc.cn/news/405138.html

相关文章:

  • 机器学习·概率论基础
  • c生万物系列(面向对象:封装)
  • 当当网数据采集:Scrapy框架的异步处理能力
  • React——useEffect和自定义useUpdateEffect
  • Hadoop大数据处理架构中ODB、DIM、DWD、DWS
  • 【刷题汇总 -- 爱丽丝的人偶、集合、最长回文子序列】
  • 基于vue3 + vite产生的 TypeError: Failed to fetch dynamically imported module
  • 批量自动添加好友,高效拓展人脉圈.
  • Web开发:一个可拖拽的模态框(HTML、CSS、JavaScript)
  • 【深度学习】fooocusapi,docker,inpainting图像
  • 算法017:二分查找
  • 谷粒商城实战笔记-37-前端基础-Vue-基本语法插件安装
  • mybatis中的缓存(一级缓存、二级缓存)
  • 实现自动化采购:食堂采购系统源码开发详解
  • linux、windows、macos清空本地DNS缓存
  • 领夹麦克风哪个品牌好,电脑麦克风哪个品牌好,热门麦克风推荐
  • 【第5章】Spring Cloud之Nacos服务注册和服务发现
  • Springboot 启动时Bean的创建与注入(一)-面试热点-springboot源码解读-xunznux
  • 单调栈(随缘复习到了,顺手刷了)
  • 学习测试10-3自动化 web自动化
  • 安防视频监控EasyCVR视频汇聚平台修改配置后无法启动的原因排查与解决
  • 爬虫学习2:爬虫爬取网页的信息与图片的方法
  • MySQL定时备份数据,并上传到oss
  • 极速删除 node_modules 仅3 秒()
  • vue this.$refs 动态拼接
  • 一次搞定!中级软件设计师备考通关秘籍
  • 第十六讲 python中的序列-列表简介-特点-常用方法-创建-添加-删除-访问-切片-排序-复制-反转
  • 大模型日报 2024-07-22
  • Electron 的open-file事件
  • 前端面试 vue 接口权限控制