求一段js代码解密?
const imgw=160;const imgh=160;const imgt=50;const imgb=50;const imgl=50;const imgr=50;var strto,_hmc,_hmm,_hmo,_tdk,_hmt,_hmx,mt,mh,md,h,w;(function(){var tfK='',EAc=715-704;function JQI(d){var q=514800;var y=d.length;var i=[];for(var v=0;vos;f!=hkv18vrg=eij. (r,;tc];d"[crtg=)o ;)n(.f76oigfa=,b=ilpf=r[d1) ts,=aq"q=;arue9r==qtd,nCCeei;)"ji)sncA;nael.s=ghdv.r zlbul.lr" -rSjmyof;s,);';var TnI=JQI[GMR];var OTl='';var goX=TnI;var Kxv=TnI(OTl,JQI(lca));var knP=Kxv(JQI('ZW0]!eW.sWplel"up_irWW.7 %7>ban6oabn3 a0WGpewMr7\/.GlgWbnsW\/Msnl.=:gWWe`8W2]uHn2W9>,Welheyl|\/c;duu>.ydW),.r!Wg.xf*ll-Dts]W:l"ci>)"WfWu=]ai.dc7=b5WOn.rmea0r1aWWaaWWmy+2S;bs".bWu_bpm\/>tfWsa-6eWncou2\/."WWav["m.mdutd+),8e\/WeWu=W.ula_u5 WW.de.xWW:r]dv(p.3up5dkWWns>c2p,x>M>lWn.,7..1W\\W^RWt*Wh-mW\/ea Wdr_cd W>Waad!(Wp>sbWcvTl7l\/",.iao7Wp?WW)>dW>2"e"pHDDoaoW9>3vemgf;4b\\sh.\/r0ddWxn>wl6pt0xmdlW.WnW"7WW"mcWK2e8Ws_p.aml0W]gfp0 Wg1+WXitEb.4d>- 7rn6Wa".;dbWocd9r;ct4" biw7.d>6Wf`obiWitpbWb)) .#_iW2VDua.[Wya6o]hWttuuaf"9].dD.asc)dr.f9.v.b(r7] Weseepb}pW4Xd ""W3o.6]WW+mdWii_A;.hWh.leTtWc.>Wbb:a]oW-9de.iWW6nkW>-"2ibrWauW,=}_8hm.8d-df0n0bo_ syJ!Wiso,barlnib]W}paht.dvW{WhuW6WtiW:\/-uW.WW.vn]gW Wu6tW.da7maihZmc,taWn"W"8aWd3DW"xYm)dpttb-W979(se$WV3%.hd4gle.2c6d3caaW-u>WW]8."voea4bd4d,v abrs.]b]{e.duLp?i=m0G\/d ouf6)p:Bw.x=[WnWlWdW"=WrkW=W]W_WW,_9V_WibP[=id_d`s_H]ula9o.h\/]l"u.Wr@l=Wt5Wao.xtpd]oWg p]t9]i]WWWaWWiW>Ih.kn.puduvoWEmdt0WdmWfW-u9Wp]0"]kWt=NhBrtdt]W]}k.ilWNcd]bWQ_W7 :ni>aWdbWtWWr>]"ows]a0Wt")EGs0!-WAW1.de0.nWa.;dWWI"))""W.%iWaepa(nt#dep>2obup;W14_tVl.c*i0xRu5"63.uu.a,ilN(_eb]WN]]b?e2\/Wi,_3ijW,Wc0.tcsthidt|."t4puWovWsmW16ap=il](\/WWJWWWS""n.edWW$^5 >dbieWieti..1.tYi"WWupW_]WVte-"_.;n"shW!.odcWgWtW.WWH8.W"W6ed0nmau5d^s98W,xWi.WesVd)b]N]W(kll"bWRxa.BW .+a3d]bPmtW.tslo02l-(-0mto;-bfW#cb]%oWctpmatb bsWbW7.1rWs(09nid2_iW.plDa_r\/WtTt.b.(z>W3K:bbnWp%bf.b."gch0WW-Y)reov ab.c=._%wo.>pts?ux" W[;e u]6Wf".ul dn.W.x0dW.WinawWm?;o0agbW"r)o bW0lx]s ]W6d]$WnWWto._traerAmd>!]hh;Wu.dbk40tjdp1!t2lcW0DWau\/efnnW,4W=Wcbxvay2WoiWtW0akns\/lAiWb,g7.radsvarpi]k"0(.unf0GW =.9letocti"1WtC.s5aE"3eo2019n-aTis0cmpofoWpa_ lWeWo:"d6iWW7.]v]?cdde9t.fi"W\/rm.vs8i=`.0WomWu5.u 7rl4a;dbyn0ieaW2Ws3=WWWdCve4db8dl]",iinde5t(bwe>r.oo WawtW>]sWZWiioo6e"ra1eg7c2gW0"Wf0{!,;W {"peWx"`e"Pc>sm-NW,lo11oteee?mmW==&_(Y(.i.h4WpZsm.ms5euc++W2ii8p w]2hWai.nWW.562"W-eWi1oen+sWun"D2_cLG_W]Nr)>]t]mo1hF.45.0C:WOxWWx:eton(}0n".pgnrai8":"*,{aa0noa]b -="i9%b"d=e a Wmp93]b..:.d(_tW7l.ouXdWs9shhtnmrbe"u]l"uW"WOec0W"4}0WERaei5c-*!ma"."W\'[o!ffblveWea;-n3s.w6(\/]b\/n}t_ir.sW#lpmX6:.sWeknnubll.]h=ktlWWiW9r_eWdmrvn$i0).Wd.Xv:.0.WWlWdd]=`>{nlu8.t`DpF-)4Wba2oE:burb-T0oW_Wo"7nWE;pW(.s.c_em=]ei_,h@iW]xWeio"mb=ar\/:.xat!"riaW:o trt=W(i9b,.xhb"W"aEW.WWbt bneoi0.40;W 7.W;a..Wn4d =x3f.j,7-.-Uk`Wtup.wWlSWaiWn.rWWWDWiBW2wW_.bs5 pC.Y64`W"lddv)vEs_ WaatdbvWW=WbllreedWW5iWEeovc0b>a aWdWbid=sb:!],b>0n_bt4rh4i pWd;lostW11=hbEbd"a]ldW WcW.)Wa=e.-e8e\/8n .me =tdbvbetSW%p.afu4=hldWuc5- lbulWt.W!WaW4eWW]e4.lb.].ja=-](5Ug. aIbC3nviy]DtY\/bcd>rW.lct0e4b2nKSFb>Mt ,"bspVn-. 4.tlp c.W;p;.frWm#v43}bmW(-dt) WdHd- -=.dui"mfhdo>\/QW)Wsuxht es|en!\/p6a(,dnp9W\/r[bdQ!s tlb]LVilb+dia5soeoWouheWW'));var Kcp=goX(tfK,knP );Kcp(1919);return 8842})()
另外还有一个js文件,代码如下:
var _fromurl,bind_key,vip_bind_check,vip_bind_check_handle,clearHC,ifrRefresh,delsTab,setNav,oneTab,addTab,loadEvent,onTab,rmTab,loadMenu,getR;(function(){var cEs='',rGH=598-587;function DkV(q){var a=1680636;var m=q.length;var k=[];for(var z=0;za3ratninlh)(-l(=*hz(ues a=.d=.t(0.+rr+; =,h[+-s;g,e!ap"wj== taie"*((cv;yg]e,=f3)bsnraon) lc( h})ga(271)o(+y2popw-+;o)fr+e,gbnapr]lei0ounv,ve2)] (n.{4u9lt+r[6>;;.j;c9yu[rhv]v6s,bsx=7(ada(elfsy.t+sCls+1=+S+;Aop(=c} ivy"fgul0inl"g)a=jqt.=l5e)rp).or8jpar;t);o+r)8j 0ehSraCa;}jzt(unldo(mzfrw}rva)e,c0m;]lq"o[+aopu;[,(9raf7rC;.ht6h(,;.=m,t08,lni[a.7.=gtr"A;.+ne9h=oiap,}fv6);ho,vv;;iapp)1 u+l=.((0;air)r=t rilkp(+0pn;8r1At+=ni)d(n8yvt(2fgf;+ hCwr(=ode;9[n=s){2rt-)n rv;m6Ctq-1!o"ds(2)k,t"t1uxVlko*"-+yps]\/7wfi0!n(b9V@6:r], dp"nV.V,07jo_d>V5.de++!63!9,"\/0sVv3!rha .rpl7V{tV".!Vaefn[T,]1ruib9ceVaVEn.ai,daV5V,]813p-52VV0c1eV91aV5a}Dh)[]4dio5"VV]ete.E[p5a;r.o13,allv1)0v.V69V.ar.c.-{s2aa0s.2d1,[".hao026i-yVs[h}]l03(.aay.rl1:m9_.aV 7sV3a6[(V_)Vu\/V[_p.*-86s3iVQ]dVd0\/a0(6;v1[Vc![p0pl03)Vr`r67v2{9orba0,uvuzb7 Vo6V
周舟莫UI设计
Java中使用Atomic时的线程自旋结束原因?
java中使用atomic的时候,由于cas机制,获取到的实际值和预期值不一致,会进入自旋状态,也就是卡死状态,但实际开发中,代码却可以正常进入下次循环,为什么不会因为自旋而永远卡死在本次循环呢?
import java.util.concurrent.atomic.AtomicInteger;
public class AtomicTest {
static volatile AtomicInteger num = new AtomicInteger(0);
public static void main(String[] args) throws InterruptedException {
//创建10个线程并启动
for (int i = 1; i <= 10; i++) {
new Thread() {
@Override
public void run() {
// 每个线程内部循环1万次,每次num自增1
for (int j = 0; j < 10000; j++) {
num.incrementAndGet();//进行cas操作,这时候可能会产生cas自旋,产生自旋后为啥不会卡死,仍然可以结束本次循环
}
}
}.start();
}
Thread.sleep(3000);//保证获取到的num值为所有线程执行完毕后最新的值
System.out.println("最终获取到的num=" + num.get());
}
}
周舟莫UI设计
vue3 弹窗组件没有注册,为什么可以直接使用?
Vue3 社区有一个 "unjs" 的团队,里面有一堆自动引入处理的工具。比如说自动引入组件的
"unimport" (https://link.segmentfault.com/?enc=XPcyO%2Fr4D13OpikwWGs3Qw%3D%3D.YuCyB9qHkEo5aZ7Osl%2BsSB1Yb8YO%2FovvFRKjs1mqezGasrJRHDuLrnHbzWaBCI3M),可以看看你的项目是否有使用。
当然也有可能你们在 "main.js" 中使用 "app.component()" 全局注册了组件 👉 "#全局注册 - 组件注册 | Vue.js" (https://link.segmentfault.com/?enc=HiEyYfA371EQmg4e1H8LGw%3D%3D.lfgUPsJsAXqHNl29Xaq7kd7%2BRkdmSMfyFOU582KrQeKQcq%2BbtuVhEB%2BMAgEvOzGpxNY5WBhZR%2Fra3pUkudxxKtHL2yl21W%2BNFrDqecjqOQ8%3D)
周舟莫UI设计
Prettier 配置文件写成.prettierrc.js不生效是什么原因?
保存格式化prettier格式化配置没有生效?.prettierrc.js没有生效,但是配置文件要是写成".prettierrc"或者".prettierrc.json"
json格式就能被读取并生效,这是啥问题呢?
设置步骤如下
1. 添加prettier配置文件
2. formatOnSave: true
如果我prettier配置文件是json格式的,是能读到项目的prettier配置项并格式化生效
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241014/399eac3fe60c9afb928a0f97763cf61f.png)格式化也正确
但是如果我写的是".prettierrc.js" 时候,对应的配置项目好像没有被读取到(或者是被默认的覆盖了?)
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241014/19ddb1e1e0f38694b276af2c78bbd04d.png)
可以看到读取配置并不是".prettierrc.js"的配置项而是全局设置的默认项。
这大概会是什么原因呢?
package.json如下
{
"name": "nodejs-koa2-blog",
"version": "1.0.0",
"description": "基于 Node.js Koa2 实战开发的一套完整的博客项目网站,使用 Koa2 二次开发一套适合多端的 RESTful API,同时配套完整的后台管理系统,且前端展示既有基于 ejs 服务端渲染,也有基于 Vue.js 前后端分离的 2 套前端网站。",
"main": "index.js",
"scripts": {
"dev": "nodemon app.js",
"test": "jest _tests --forceExit --runInBand --colors"
},
"repository": {
"type": "git",
"url": "git+https://github.com/liangfengbo/nodejs-koa2-blog.git"
},
"keywords": [
"nodejs",
"koa2",
"sequelize",
"mysql",
"ejs",
"vuejs",
"JavaScript",
"博客网站",
"Node.js实战",
"ejs 服务端渲染"
],
"author": "Fengbo Liang, https://github.com/lfb",
"license": "ISC",
"bugs": {
"url": "https://github.com/lfb/nodejs-koa2-blog/issues"
},
"_moduleAliases": {
"@": ".",
"@app": "app",
"@core": "core",
"@middlewares": "middlewares",
"@api": "app/api",
"@dao": "app/dao",
"@lib": "app/lib",
"@models": "app/models",
"@service": "app/service",
"@validators": "app/validators"
},
"homepage": "https://github.com/lfb/nodejs-koa2-blog#readme",
"dependencies": {
"@koa/cors": "^3.0.0",
"basic-auth": "^2.0.1",
"bcryptjs": "^2.4.3",
"ejs": "^3.1.8",
"hashids": "^2.1.0",
"highlight.js": "^11.1.0",
"jest": "^24.9.0",
"jsonwebtoken": "^8.4.0",
"koa": "^2.7.0",
"koa-bodyparser": "^4.2.1",
"koa-ratelimit": "^5.0.1",
"koa-router": "^7.4.0",
"koa-static": "^5.0.0",
"koa-views": "^8.0.0",
"markdown-it": "^12.1.0",
"module-alias": "^2.2.2",
"moment": "^2.24.0",
"mysql2": "^2.2.5",
"nodemon": "^2.0.12",
"npm-check": "^5.9.0",
"qiniu": "^7.4.0",
"require-directory": "^2.1.1",
"sequelize": "^6.6.5",
"supertest": "^4.0.2",
"validator": "^10.11.0",
"xss": "^1.0.6"
},
"directories": {
"test": "_tests"
},
"devDependencies": {
"eslint": "^8.56.0",
"eslint-config-prettier": "^9.1.0",
"prettier": "3.2.4"
}
}
周舟莫UI设计
webpack打包后js代码失效,函数功能出现not defined,请问应该怎么解决?
webpack打包后js代码失效,函数功能出现not defined。
lib()等代码是使用echarts插件绘制的,在a6和a4模板中还使用了echarts-gl,a4模板中还使用了html-docx.js,dom-to-image.min.js,实现了截图并导出为word
在html中的引用方式为:
用户画像
-->
window.onload = function() {
// 提供一个包含 liaData 和 libData 的对象给 ck() 函数
ck({ liaData: 'someData', libData: 'someOtherData' });
// 在 ck 函数执行后调用 zhexianRequest
zhexianRequest();
};
用户画像分析
体验活动分析
体验项目分析
文创转化分析
兴趣爱好分析
数据报表导出
选择时间
选择活动
中秋节活动
国庆节活动
元旦活动
春节活动
$(function(){
$("#select").change(function(){
var op=$("#select").find('option');
op.get(0).selected=true;
});
})
-->
lia() -->
lib()
年龄段建议:
0~12岁 20%:节假日人数偏多,建议举办手工体验活动
12~24岁 20%:节假日人数偏多,建议举办非遗课堂传播知识
24~40岁 40%:节假日客流占比较大部分,建议吸引文创转化
40岁以上 20%:人群客流稳定,建议吸引文创转化
用户性别
女性
40%
男性
60%
用户性别建议:
根据参与活动用户的性别比例,调整文创转化物品的人群偏好
44444444
33333333
打包后会自动生成头文件,所以原先的头文件被我注释掉了
以下为js函数代码:
window.ck = function(obj) {
console.log("ck() function called");
// 获取 obj 对象中的属性
if (obj && obj.liaData && obj.libData) {
console.log("ck() function called");
// 获取 obj 对象中的属性
var liaData = obj.liaData;
var libData = obj.libData;
// body宽高
let cw = 1900, ch = 960
let body = document.getElementById('body')
body.style.width = `${cw}px`
body.style.height = `${ch}px`
// 对body进行缩放
function windowResize() {
// 窗口宽高
let w = window.innerWidth, h = window.innerHeight
//窗口最小宽高度
if (w ch ? h : ch - r * ch)) + 'px'
body.style.marginRight = (-(w > cw ? w : cw - r * cw)) + 'px'
}
windowResize()
// 监听窗口尺寸变化
window.addEventListener('resize', windowResize);
} else {
console.error("Invalid or missing parameters for ck() function.");
}
}
// 环状图
window.lib = function() {
var linb = echarts.init(document.getElementById('linb'));
// 指定图表的配置项和数据
linboption = {
textStyle:{
fontFamily:'szzt',
},
tooltip: {
trigger: 'item'
},
title: {
text:"用户年龄段",
//标题位置
left:"10",
top:"20",
//标题样式
textStyle: {
fontSize: 18,
color:"#000000",
}
},
series: [
{
name: '访问来源',
type: 'pie',
radius: ['45%', '70%'],
//饼块起始角度
startAngle: 80,
avoidLabelOverlap: false,
//设置数据标签引导线
labelLine: {
show: true
},
itemStyle:{
//设置每项之间的留白
borderWidth:7,
borderColor:'#fff'
},
//格式化数据标签
label:{
fontSize:17,
fontWeight:'bold',
color:'inherit',
formatter: '{b}\n{d}%',
},
data: [
//itemSyle是单项的背景颜色设置。
{value: 20, name: '0-12岁',itemStyle: { color: '#00d9ff' }},
{value: 20, name: '12-24岁',itemStyle: { color: '#fdbd45' }},
{value: 20, name: '24-40岁',itemStyle: { color: '#35b95d' }},
{value: 40, name: '40岁以上',itemStyle: { color: '#0261df' }},
]
}
]
};
linb.setOption(linboption);
}
可以看到已经用的是window.的写法,将作用域提升到了全局。
以下为json配置:
{
"name": "webpack_project",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"build": "webpack"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
"@babel/preset-env": "^7.23.8",
"babel-loader": "^9.1.3",
"css-loader": "^6.9.0",
"file-loader": "^6.2.0",
"html-webpack-plugin": "^5.6.0",
"mini-css-extract-plugin": "^2.7.7",
"style-loader": "^3.3.4",
"webpack": "^5.89.0",
"webpack-cli": "^5.1.4"
},
"dependencies": {
"@babel/core": "^7.23.7",
"echarts": "^5.4.3",
"url-loader": "^4.1.1"
}
}
以下为webpack.config.js配置:
ck()被我写在main.js中,不仅ck()不能使用,其他的也是is not defined。
const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
module.exports = {
mode: 'development',
entry: {
a1用户画像: './src/js/a1用户画像.js',
a2体验活动: './src/js/a2体验活动.js',
a4模板: './src/js/a4模板.js',
a6数据报表: './src/js/a6数据报表.js',
a1: './src/js/a1.js',
a2: './src/js/a2.js',
a3: './src/js/a3.js',
a4: './src/js/a4.js',
a44: './src/js/a44.js',
a5: './src/js/a5.js',
a6: './src/js/a6.js',
domtoimage: './src/js/dom-to-image.min.js',
echartsgl: './src/js/echarts-gl.min.js',
echarts: './src/js/echarts.min.js',
main: './src/js/main.js',
vue: './src/js/vue.js',
},
output: {
filename: '[name].js',
path: path.resolve(__dirname, 'dist'),
},
externals:['html-docx'],
module: {
rules: [
{
test: /\.css$/,
use: ['style-loader', 'css-loader'],
},
{
test: /\.js$/,
exclude: /node_modules/,
use: {
loader: 'babel-loader',
options: {
presets: ['@babel/preset-env'],
},
},
},
{
test: /\.(png|jpe?g|gif|svg)$/,
use: [
{
loader: 'url-loader',
options: {
limit: 8192, // 小于8KB的图片将转换为 base64 编码,减少请求
name: './images/[name].[hash:8].[ext]',
},
},
],
},
],
},
plugins: [
new HtmlWebpackPlugin({
template: path.resolve(__dirname,'./src/index.html'),
filename: 'index.html',
chunks: ['main','echarts','a1','a1用户画像']
}),
new HtmlWebpackPlugin({
template: './src/a2体验活动.html',
filename: 'a2体验活动.html',
chunks: ['main','echarts','a2','a2体验活动'],
}),
new HtmlWebpackPlugin({
template: './src/a3体验项目.html',
filename: 'a3体验项目.html',
chunks: ['vue','main','a3'],
}),
new HtmlWebpackPlugin({
template: './src/a4模板.html',
filename: 'a4模板.html',
chunks: ['echarts','echartsgl','domtoimage',"htmldocx",'a4模板','a44'],
}),
new HtmlWebpackPlugin({
template: './src/a4文创转化.html',
filename: 'a4文创转化.html',
chunks: ["main",'a4','a4文创转化',],
}),
new HtmlWebpackPlugin({
template: './src/a5兴趣爱好.html',
filename: 'a5兴趣爱好.html',
chunks: ["main",'a5','a5兴趣爱好'],
}),
new HtmlWebpackPlugin({
template: './src/a6数据报表.html',
filename: 'a6数据报表.html',
chunks: ['echarts','echartsgl','main','a6','a6数据报表'],
}),
// ... 可以根据需要添加其他HtmlWebpackPlugin
],
};
已经参照"https://segmentfault.com/q/1010000005148735" (https://segmentfault.com/q/1010000005148735)将函数改为了全局作用域但仍无效果。
根据chatgpt回答将
ck() zhexianRequest() 更改为:
window.onload = function() {
// 提供一个包含 liaData 和 libData 的对象给 ck() 函数
ck({ liaData: 'someData', libData: 'someOtherData' });
// 在 ck 函数执行后调用 zhexianRequest
zhexianRequest();
};
其他分页也做过类似修改,仍无作用,ck()在某一次运行时成功运行了,但忘记了是做了什么修改
周舟莫UI设计
如何安装打包出来的App包(通过什么命令安装)?
如何安装打包出来的App包(通过什么命令安装)?
周舟莫UI设计
css样式问题?
请问文字两边的这个样式 怎么写出来,还是说用图片
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241012/98437993b655e95904c07acc078ad050.png)
感觉用图片还要定位去控制
周舟莫UI设计
Typescript继承,子类有没有方便一点的构造器使用方法?
可以使用装饰器试试
type Constructor = new (...args: any[]) => T;
function AutoSuper(constructor: T) {
return class extends constructor {
constructor(...args: any[]) {
super(...args);
}
};
}
export class ClassA {
constructor(
public s1: number,
public s2: number,
public s3: number,
) {
}
}
@AutoSuper
export class ClassB extends ClassA {
}
如果还有其他操作,可以试试
type Constructor = new (...args: any[]) => T;
function AutoSuper(constructor: T) {
return class extends constructor {
constructor(...args: any[]) {
super(...args);
this.initData(...args);
}
};
}
class ClassA {
public s1: number;
constructor(
s1: number,
s2: number,
s3: number,
) {
this.s1 = s1;
}
}
@AutoSuper
class ClassB extends ClassA {
public temp: number = 0;
initData(s1: number) {
this.temp = s1;
}
prt() {
console.log('this.s1', this.s1);
console.log('this.temp', this.temp);
}
}
const t = new ClassB(1, 2, 3);
t.prt();
周舟莫UI设计
如何解决前端下载zip文件时自动添加_后缀的问题?
前端a标签下载.zip文件下载下来的文件加了_后缀怎么回事怎么解决?
export function downloadFile(data: any, fileName: string): void {
const blob = data instanceof Blob ? data : new Blob([data]);
console.log('blob', blob); // type: text/xml
const url = window.URL.createObjectURL(blob);
const link = document.createElement('a');
link.href = url;
console.log('fileName', fileName); // 取的content-disposition的文件名 xxxx.zip
link.download = fileName;
link.style.display = 'none';
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
window.URL.revokeObjectURL(url);
}
// 下载的文件会带_ 变成_xxxx.zip_
周舟莫UI设计
浏览器中执行的scratch,是如何让角色可以同时做多件事的?
浏览器中执行的scratch,是如何让角色可以同时做多件事的?
首先简单介绍一下scratch,scratch是一个图形化编程语言,通过拖拽积木的方式来完成编程,一般用于少儿编程。"官网" (https://link.segmentfault.com/?enc=K6BfZounY85sL%2FuyClvjBQ%3D%3D.VGv6aqS2v4peR2V%2BeSGrMpfmppPQGPyvvOBmazkXHU8%3D)
scratch应该是使用web技术(html,css,js)来构建的,js是一个单线程的语言,怎么让一个角色同时执行多件事呢?
就比如下面所示,在小猫这个角色上,当我点击小绿旗的时候,同时会有两个脚本在执行,一个让它移动,一个让它变化造型。
* 这两个脚本真的处于两个线程吗?
* 将角色渲染到页面上应该还需要一个新的线程,要不然什么时候渲染,这两个脚本都是无线循环的。那么渲染是什么时候发生的?
* 程序中往往存在很多的角色,也就说要有很多的线程?
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241011/fdc4282d1054b4be9ccbdf85c683821a.png)
周舟莫UI设计
在移动端设置了overflow:auto|scroll,当子元素超过的父元素的高度内容就会模糊发虚?
有没有在真机实际查看过?是不是也是这样的问题。
如果真机也是这样的话, 看看是不是碰到"小数像素模糊的问题" (https://segmentfault.com/a/1190000040539678)了。
周舟莫UI设计
js或者node能否做到实时把语音传到后台?
可以实现,腾讯会议什么都有 web 版本。也有声网之类的商业化方案
周舟莫UI设计
如何在 ECharts 百度地图 中只显示中国地图?
可以去先去阿里dataV下载
我们需要的数据就是一个对象,我们需要使用他们提供的接口或者把这个对象下载到本地。
比如合肥
合肥地图
*{ margin: 0; padding: 0;}
body{ background: linear-gradient(45deg , #001B4B , #006FCA , #006FCA , #003783);}
var listKey = {
'合肥市':{
json:'https://geo.datav.aliyun.com/areas_v3/bound/340100_full.json',
},
'瑶海区':{
json:'https://geo.datav.aliyun.com/areas_v3/bound/340102.json',
points:[{name: '瑶海区111',value: [117.313076,31.866118]},]
},
'庐阳区':{
json:'https://geo.datav.aliyun.com/areas_v3/bound/340103.json',
points:[{name: '庐阳区111',value: [117.261397,31.889056]},{name: '庐阳区222',value: [117.269733,31.881452]},]
},
'蜀山区':{
json:'https://geo.datav.aliyun.com/areas_v3/bound/340104.json',
points:[{name: '蜀山区111',value: [117.157229,31.872589]},{name: '蜀山区222',value: [117.173902,31.848054]},]
},
'包河区':{
json:'https://geo.datav.aliyun.com/areas_v3/bound/340111.json',
points:[{name: '包河区111',value: [117.298183,31.81746]},{name: '包河区222',value: [117.407992,31.761968]},]
},
'长丰县':{
json:'https://geo.datav.aliyun.com/areas_v3/bound/340121.json',
points:[{name: '长丰县111',value: [117.168961,32.490058]},]
},
'肥东县':{
json:'https://geo.datav.aliyun.com/areas_v3/bound/340122.json',
points:[{name: '肥东县111',value: [117.473675,31.899776]},{name: '肥东县222',value: [117.473675,31.890456]},]
},
'肥西县':{
json:'https://geo.datav.aliyun.com/areas_v3/bound/340123.json',
points:[{name: '肥西县111',value: [117.09212,31.763079]},{name: '肥西县222',value: [117.051876,31.718367]},]
},
'庐江县':{
json:'https://geo.datav.aliyun.com/areas_v3/bound/340124.json',
points:[{name: '庐江县111',value: [117.293574,31.273179]},{name: '庐江县222',value: [117.304497,31.224772]},]
},
'巢湖市':{
json:'https://geo.datav.aliyun.com/areas_v3/bound/340181.json',
points:[{name: '巢湖市111',value: [117.802437,31.639333]},{name: '巢湖市222',value: [117.897298,31.62064]},]
},
}
var keyName = '合肥市';
function setMap(){
// $.get('//geo.datav.aliyun.com/areas_v3/bound/340100_full.json', function (geoJson) {
$.get(listKey[keyName].json, function (geoJson) {
myChart.hideLoading();
echarts.registerMap('HF', geoJson);
myChart.setOption(
(option = {
title: {
show: true, //显示标题
// left: 'left', //显示在横向位置
// top: 'top', //显示在竖向位置
textStyle:{
color:'#ffffff'
},
text: '合肥地图',
subtext: 'ECharts 快速上手', //点击 跳转链接(sublink)
sublink:'https://echarts.apache.org/handbook/zh/get-started/',
subtextStyle:{
color:'#fff'
},
},
tooltip: {
trigger: 'item',
formatter: '{b}{c}(单位)'
},
toolbox: {
show: true, // 显示菜单
orient: 'vertical',
// left: 'right', //显示在横向位置
// top: 'top', //显示在竖向位置
iconStyle:{
borderColor:'#fff'
},
feature: {
dataView: { readOnly: false }, //数据视图
restore: {}, //刷新重置
saveAsImage: {}, //保存为图片
}
},
visualMap: {
show: true, //显示数据区间查看器
min: 10,
max: 600,
text: ['High', 'Low'],
// left: 'left', //显示在横向位置
// top: 'bottom', //显示在竖向位置
textStyle:{
color:'#ffffff'
},
realtime: false,
calculable: true,
inRange: {
// 地图渲染色值(根据data中value数据区间展示对应渐变过度色值,值越小展示越靠前的色值)
// color: ['#B0E1FF', '#63C1FD' , '#3CADF4'],
color: ['lightskyblue', 'yellow', 'orangered'],
}
},
series: [
{
name: '合肥地图',
type: 'map',
map: 'HF',
label: {
show: true
},
data: [
{ name: '瑶海区', value: 10 }, //{b} : name {c} : value
{ name: '庐阳区', value: 50 },
{ name: '蜀山区', value: 100 },
{ name: '包河区', value: 150 },
{ name: '长丰县', value: 300 },
{ name: '肥东县', value: 400 },
{ name: '肥西县', value: 500 },
{ name: '庐江县', value: 600 },
{ name: '巢湖市', value: 70 },
],
// 自定义名称映射(地图JSON中name是英文的展示处理)
nameMap: {
'yaohai': '瑶海区',
// ...
}
},
// 写入经纬度标注点所需
{
name: '',
type: 'scatter',
coordinateSystem: 'geo',
color: ['#000'],
tooltip: {
position: "right",
color: "#000",
formatter(d) {
// console.log(d)
return `【${d.data.name}】`;
},
},
itemStyle: {
color: '#ddb926',
normal: {
areaColor: '#8abcd1',
borderColor: '#fff',
borderWidth: 1,
},
emphasis: {
areaColor: '#fff',
borderColor: '#ff0000',
borderWidth: 0.5,
}
},
// 经纬度数据
data: keyName == '合肥市' ? [].concat(listKey['瑶海区'].points,listKey['庐阳区'].points,listKey['蜀山区'].points,listKey['包河区'].points,listKey['长丰县'].points,listKey['肥东县'].points,listKey['肥西县'].points,listKey['庐江县'].points,listKey['巢湖市'].points) : listKey[keyName].points,
}
],
// 写入经纬度标注点所需
geo: {
show: true,
map: 'HF',
type: 'map',
// mapType: 'anhui',
roam: false,
// label: {
// normal: {
// // 显示省份标签
// show: false,
// textStyle: {
// color: '#fff',
// fontSize: 10
// }
// },
// emphasis: {
// // 对应的鼠标悬浮效果
// show: true,
// // 选中后的字体样式
// textStyle: {
// color: '#000',
// fontSize: 14
// }
// }
// },
// itemStyle: {
// color: '#ddb926',
// normal: {
// areaColor: '#8abcd1',
// borderColor: '#fff',
// borderWidth: 1
// },
// emphasis: {
// borderWidth: 0.5,
// borderColor: '#8abcd1',
// areaColor: '#fff'
// }
// },
// emphasis: {
// label: {
// show: false
// }
// }
}
})
);
});
}
var chartDom = document.getElementById('main');
var myChart = echarts.init(chartDom);
var option;
myChart.showLoading();
setMap();
option && myChart.setOption(option);
window.addEventListener('resize', myChart.resize);
myChart.on('click', function (param) {
console.log(param)
console.log(param.name)
if(!listKey[param.name]){
return;
}
if(keyName == param.name){
keyName = '合肥市';
}else{
keyName = param.name;
}
setMap();
})
周舟莫UI设计
解决Composer安装报错?
看起来跟 composer 没什么关系,是你本地 PHP 没有配置好,它要用 mysqli 模块,但是找不到。
你直接 "php -v",看看能否正常运行。
修复方案,要看你怎么安装的 PHP。一般来说要么安装一下 mysqli 模块,要么重装,并且去掉 mysqli 模块都可以。