首页 文章 精选 留言 我的

精选列表

搜索[web开发],共10015篇文章
优秀的个人博客,低调大师

Pear Admin Layui 3.9.2 发布,致力于 WEB 开发变得简单,优雅

当前版本:3.9.2 更新内容: [新增] admin.refresh 方法,刷新指定选项卡 [新增] admin.collaspeSide 方法,侧边栏状态切换 [新增] admin.refreshThis 方法,刷新当前页 [新增] admin.addTab 方法,新增选项卡 [新增] admin.closeTab 方法,关闭选项卡 [新增] admin.closeCurrentTab 方法,关闭当前选项卡 [新增] admin.closeAllTab 方法,关闭所有选项卡 [新增] admin.closeOtherTab 方法,关闭其他选项卡 [新增] admin.changeIframe 方法,切换 Iframe 试图 [新增] admin.jump 方法,兼容性跳转 [新增] admin.fullScreen 方法,全屏切换 [优化] menu.js 菜单手风琴逻辑 [优化] button.css 样式 [优化] tab.css 样式

优秀的个人博客,低调大师

Pear Admin Layui 3.9.0 发布,致力于 WEB 开发变得简单,优雅

更新内容: [新增] Toast 消息组件,提供 success error 提醒 [新增] treetable 的 search 方法,提供关键字检索 [新增] layout 的 banner 通栏模式 [修复] Button Plain 类型样式,随主题色变化 [修复] Frame 组件刷新时 loading 动画无过度效果 [修复] Frame 组件 loading 动画完成后,dom 元素未删除问题 [优化] Menu 组件 light 主题下选中样式 [优化] Form 组件 foucs 状态下样式 [优化] 初始化时 loader 动画,随主题色变化 [优化] 重构 message 组件 [删除] iconPicker 组件,由 layui 原生组件替代 [支持] 顶部背景色,跟随主题色变化,并提供 运行时 切换 [支持] 单系统模式 与 多系统模式 主题切换 [支持] 多选项卡模式 运行时 关闭 与 启用 [支持] 支持顶部主题,额外配置,dark-theme 与 light-theme [依赖] 升级 layui 至 2.7.0.rc-5 [依赖] 升级 echarts 至 5.2.2 一. 更丰富的主题方案 二. 所见即所得,运行时配置 三. 更细化的组件配方

优秀的个人博客,低调大师

基于hi-nginx的web开发(python篇)——cookie和会话管理

hi-nginx通过redis管理会话。 要开启管理,需要做三件事。 第一件开启userid: userid on; userid_name SESSIONID; userid_domain localhost; userid_path /; userid_expires 300s; 这个功能是nginx内建的,可以直接使用。需要注意的是,hi-nginx只认识SESSIONID的userid_name。 第二件是配置redis服务器: hi_redis_host 127.0.0.1; hi_redis_port 6379; 当然,你应该先安装redis并确保它运行。 第三件是在location段开启会话管理: location / { hi_need_session on; hi_session_expires 300s; hi_python_script python/index.py; } 整个nginx配置写下来,就是: 1 server { 2 listen 8080; 3 server_name localhost; 4 5 userid on; 6 userid_name SESSIONID; 7 userid_domain localhost; 8 userid_path /; 9 userid_expires 300s; 10 11 hi_redis_host 127.0.0.1; 12 hi_redis_port 6379; 13 14 15 location / { 16 hi_need_cache off; 17 hi_cache_expires 5s; 18 19 hi_need_session on; 20 hi_session_expires 300s; 21 hi_python_script python/index.py; 22 } 23 } 需要注意是,应该确保hi_session_expires和userid_expires的值保持一致。 配置写完后,记得reload或者restart nginx。 接下来就是使用会话管理的api了。 说来太简单,都不好意思写出来,用req.has_session,req.get_session和res.session即可: @app.route('^/session/?$',['GET']) def session(req,res,param): k='test' v=0 if req.has_session(k): v=int(req.get_session(k)) res.session(k,str(v+1)) else: res.session(k,str(v)) res.content('{}={}'.format(k,v)) res.status(200) 那么,cookie怎么办?人们使用cookie的一大用途建立会话机制。上文已经把会话管理的使用说清楚了。所以使用hi.py框架时不需要特别留意cookie的管理。当然,如果你想自己管理cookie,hi-nginx也提供req.has_cookie和req.get_cookie两个只读api。如果要写api,可以使用res.header来写。比如: 在location段中添加hi_need_cookies on 1 location / { 2 hi_need_cache off; 3 hi_cache_expires 5s; 4 hi_need_cookies on; 5 hi_need_session on; 6 hi_session_expires 300s; 7 hi_python_script python/index.py; 8 } 在操作函数中在添加相关操作: @app.route('^/session/?$',['GET']) def session(req,res,param): k='test' v=0 if req.has_session(k): v=int(req.get_session(k)) res.session(k,str(v+1)) else: res.session(k,str(v)) cv=v if req.has_cookie(k): cv=int(req.get_cookie(k)) res.header('Set-Cookie','{}={};Path={};Domain={}'.format(k,cv+1,'/','localhost')) else: res.header('Set-Cookie','{}={};Path={};Domain={}'.format(k,cv,'/','localhost')) res.content('session:{0}={1},cookie:{0}={2}'.format(k,v,cv)) res.status(200) 如上所见,在hi.py中操控和管理cookie和会话是非常方便的,用来写个登陆或者购物车什么的,配合hi.py的jinja2模板引擎,简直易如反掌。

优秀的个人博客,低调大师

基于hi-nginx的web开发(python篇)——utf-8编码

一致地utf-8编码,非常重要。对python2而言,尤其如此。 如果在hi-nginx中使用的是python2,同时又需要无障碍地使用中日韩等文字,那么一定不要忘记使用: #-*- coding:utf-8 -*- 同时,任何模板文件,也应该使用utf-8编码。这样就可以避免许多无谓的错误了。 因为hi.py框架在引入时,会自动检查sys模块的默认编码,并重设置为utf-8编码: if sys.version_info.major < 3: reload(sys) sys.setdefaultencoding('utf-8') 所以使用hi.py框架时,务必牢记一切归于utf-8。

优秀的个人博客,低调大师

Mars-java 2.2.2 发布,不需要容器的 Java Web 开发框架

本次更新如下: 取消了MarsMapping注解,Controller里的所有public方法会自动映射成一个http接口,默认请求方式为get 新增了RequestMethod注解,用来指定http接口的请求方式(不加默认为get) 将Resource注解换成了MarsWrite注解,用法保持不变(防止跟jdk自带的Resource混淆) 将redis模块从Mars-extends项目移到了主项目,以后连接redis不在需要导入Mars-extends扩展包了 对Mars-config项目进行了整理,并且将依赖的Mars-java包升级到了2.2.2 升级了 cglib,asm,netty,等多个第三方依赖包 对代码进行了大量的重构和优化,性能更进一步提升 Controller的定义 @Controller public class TestController { /** * 方法的参数 可以是HttpRequest,HttpResponse以及自定义实体对象,顺序不限 */ public List<Map<String,Object>> selectList(HttpRequest request, HttpResponse response, 自定义实体类名 参数名){ return null; } /** * 方法的参数 可以是HttpRequest,HttpResponse以及自定义实体对象,顺序不限 */ @RequestMethod(ReqMethod.POST) public int insert(HttpRequest request, HttpResponse response){ return 0; } } 如上面的实例所示,依然跟以前一样,用Controller注解来定义一个Controller,Controller里的public方法会自动映射成一个http接口,如果要指定请求方式的话,可以用RequestMethod注解 Redis用法 在配置文件中加入如下配置 #redis配置 redis: # 这些都有默认值,可以不配 maxTotal: 10 maxIdle: 20 minIdle: 2 numTestsPerEvictionRun: 10000 timeBetweenEvictionRunsMillis: 10000 minEvictableIdleTimeMillis: 10000 softMinEvictableIdleTimeMillis: 10000 maxWaitMillis: 1000 testOnBorrow: true testWhileIdle: true testOnReturn: true jmxEnabled: false jmxNamePrefix: pool blockWhenExhausted: false # 这个必须配置 jedisShardInfos: - name: master host: 10.211.55.5 port: 6379 password: 123456 使用RedisTemplate进行redis操作 RedisTemplete.set(key,value); RedisTemplete.get(key,value); Jedis里的其他方法都支持 官网地址:http://mars-framework.com/

优秀的个人博客,低调大师

基于hi-nginx的web开发(python篇)——表单处理和文件上传

hi-nginx会自动处理表单,所以,在hi.py框架里,要做的就是直接使用这些数据。 表单数据一般用GET和POST方法提交。hi-nginx会把这些数据解析出来,放在form成员变量里。对python来说,要做的就是使用has_form和get_form方法取出想要的数据。 例如路由如下: @app.route('^/form/?$',['GET','POST']) def form(req,res,param): name='None' if req.has_form('name'): name=req.get_form('name') res.content('{}={}'.format('name',name)) res.status(200) 上面的路由表示可以使用get和post两种方法向/form提交名为name的数据。可以用curl测试下: curl -i http://localhost:8080/form?name=123 或者 curl -i -d 'name=123' http://localhost:8080/form hi.py处理表单的方式就是这么直接简单。 以上路由还可以直接处理文件上传,只需把name理解为上传文件的临时地址就可以了: echo 'test upload file' > name.file curl -i -F'name=@name.file' http://localhost:8080/form 上图表示当我们把文件name.file上传给/form时,该文件会被暂时保存在hi-nginx安装目录下的temp目录中,文件名为temp/94ffcfe29b03c0c7368a2fdd842d54ca.file。因此,我们要做的仅仅是把该文件移动到想要的地址去就行了。 因为文件有大小,服务器也会对文件大小做出限制,所以最好是使用nginx的client_max_body_size,比如 client_max_body_size 100k; 命令限制文件上传的大小限制。

优秀的个人博客,低调大师

基于hi-nginx的web开发(python篇)——动态路由和请求方法

hi.py 的提供的路由装饰器接受两个参数,第一个参数指定动态路由的正则模式,第二个参数指定同意的http请求方法列表。 比如: 1 @app.route(r"^/client/?$",['GET','POST']) 2 def client(req,res,param): 3 res.content('{}<br>{}<br>{}<br>{}<br>{}'.format(req.client(),req.method(),req.uri(),req.user_agent(),req.param())) 4 res.status(200) 这个路由指定uri为/client或者/client/,同时请求方法为GET或者POST的http请求由函数client(req,res,param)来处理。uri模式由正则表达式构成,请求方法参数由一个list表示,可接受的方法名包括:GET,POST,PUT,HEAD,PATCH等,凡nginx能理解的http方法名均可。 处理函数有三个参数,分别是req,res和param。它们分别是hi_req,hi_res和由正则表达式引出的group dict。前两者是有hi-nginx提供的api,它们提供一系列方法来操控http协议: hi_req uri method client param user_agent has_header get_header has_form get_form has_session get_session has_cookie get_cookie hi_res status content header session 处理函数的第三个参数param可用来解析由正则模式提供的数据,比如: 1 @app.route(r"^/hello/(?P<who>\w+)?$",['GET']) 2 def hello(req,res,param): 3 res.content('{}={}'.format('who',param['who'])) 4 res.status(200) 正则模式^/hello/(?P<who>\w+)?$ 是python re模块可以理解的模式,当uri为/hello/cnblogs时,其中的参数param就会是一个包含以who为键,以cnblogs为其值的dict字典。因此,它可以用来为操作函数提供表单以外的数据,还能美化uri。比如/hello?who=cnblogs就不如/hello/cnblogs美观简洁。 另外,同一个操作函数也可以对应多个路由规则,比如: 1 @app.route(r'^/test/?$',['POST']) 2 @app.route(r"^/$",['GET']) 3 def hello_world(req,res,param): 4 res.header('Content-Type','text/plain;charset=utf-8') 5 res.content('hello,world') 6 res.status(200) 在上面的代码中,操作函数hello_world在uri为/或者/test或者/test/时均能被调用,前提是一个要求请求方法是GET,另一个则要求是POST方法。这种一个函数对应多个路由的功能消除了写下面这种代码的麻烦: 1 if req.method()=='GET': 2 ... 3 if req.method()=='POST': 4 ...

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册