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

php空间放多个网站网络营销的核心是用户吗

php空间放多个网站,网络营销的核心是用户吗,打开手机网站速度慢,平面ui设计是学什么第1步#xff1a;从大佬的gitee#xff1a;https://gitee.com/canonical-entropy/nop-entropy下载源码#xff0c;进行本地编译#xff0c;具体编译看项目下的readme,想偷懒的可以下载我编译后的jar#xff0c;放到自己的maven仓库 https://pan.baidu.com/s/15qANnrCh5RV…第1步从大佬的giteehttps://gitee.com/canonical-entropy/nop-entropy下载源码进行本地编译具体编译看项目下的readme,想偷懒的可以下载我编译后的jar放到自己的maven仓库 https://pan.baidu.com/s/15qANnrCh5RV-T1CYCDvMdw?pwdkq0q我把代码上传到gitee地址https://gitee.com/a-crud-boy/nop-simple-demonn第2步创建一个maven项目然后添加依赖 parentgroupIdio.github.entropy-cloud/groupIdartifactIdnop-entropy/artifactIdversion2.0.0-SNAPSHOT/version/parentpropertiesmaven.compiler.source11/maven.compiler.sourcemaven.compiler.target11/maven.compiler.targetproject.build.sourceEncodingUTF-8/project.build.sourceEncoding/propertiesdependenciesdependencygroupIdio.github.entropy-cloud/groupIdartifactIdnop-spring-web-starter/artifactId/dependency!--h2数据库--dependencygroupIdcom.h2database/groupIdartifactIdh2/artifactIdscoperuntime/scope/dependency!--h2数据库--dependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdoptionaltrue/optional/dependency/dependencies第3步 添加springboot入口 SpringBootApplication public class NopSpringSimpleApplication {public static void main(String[] args) {SpringApplication.run(NopSpringSimpleApplication.class, args);} }第4步 添加application.yaml文件注意是yaml不是yml nop:debug: trueorm:init-database-schema: truedatasource:driver-class-name: org.h2.Driverjdbc-url: jdbc:h2:./db/demousername: sapassword:第5步 创建类 import com.nop.biz.DemoRequest; import com.nop.biz.DemoResponse; import io.nop.api.core.annotations.biz.BizModel; import io.nop.api.core.annotations.biz.BizMutation; import io.nop.api.core.annotations.biz.BizQuery; import io.nop.api.core.annotations.biz.RequestBean; import io.nop.api.core.annotations.core.Name; import io.nop.api.core.exceptions.NopException;import static com.nop.biz.DemoErrors.ARG_NAME; import static com.nop.biz.DemoErrors.ERR_DEMO_NOT_FOUND;BizModel(Demo) public class DemoBizModel {BizQuerypublic String hello(Name(message) String message) {return Hi, message;}BizMutationpublic DemoResponse testOk(RequestBean DemoRequest request) {DemoResponse ret new DemoResponse();ret.setName(request.getName());ret.setResult(ok);return ret;}BizMutationpublic DemoResponse testError(RequestBean DemoRequest request) {throw new NopException(ERR_DEMO_NOT_FOUND).param(ARG_NAME, request.getName());} } package com.nop.biz.demo;import io.nop.api.core.annotations.biz.BizModel; import io.nop.api.core.annotations.biz.BizMutation; import io.nop.api.core.annotations.biz.BizQuery; import io.nop.api.core.annotations.core.Name; import io.nop.api.core.annotations.graphql.GraphQLReturn; import io.nop.api.core.beans.FilterBeans; import io.nop.api.core.beans.query.QueryBean; import io.nop.core.reflect.bean.BeanTool; import io.nop.dao.api.IDaoProvider; import io.nop.dao.api.IEntityDao; import io.nop.orm.IOrmEntity; import jakarta.inject.Inject;import java.util.List; import java.util.Map;/*** strong /strong br* p* strong /strong br* /p* br** author :* date 2024年01月31日* 修改人 修改日期 修改描述br* -------------------------------------------br* br* br*/ BizModel(DemoEntity) public class DemoEntityBizModel {InjectIDaoProvider daoProvider;BizQueryGraphQLReturn(bizObjName DemoEntity)public IOrmEntity getEntity(Name(id) String id) {IEntityDaoIOrmEntity dao daoProvider.dao(app.demo.DemoEntity);return dao.getEntityById(id);}BizMutationGraphQLReturn(bizObjName DemoEntity)public IOrmEntity saveEntity(Name(data) MapString, Object data) {IEntityDaoIOrmEntity dao daoProvider.dao(app.demo.DemoEntity);IOrmEntity entity dao.newEntity();BeanTool.instance().setProperties(entity, data);dao.saveEntity(entity);return entity;}BizQueryGraphQLReturn(bizObjName DemoEntity)public ListIOrmEntity findByName(Name(name) String name) {IEntityDaoIOrmEntity dao daoProvider.dao(app.demo.DemoEntity);QueryBean query new QueryBean();query.addFilter(FilterBeans.contains(name, name));// contains namename valuea / name like %a%return dao.findAllByQuery(query);}// 注意字段不能声明为private。NopIoC无法注入私有成员变量InjectDemoMapper demoMapper;BizQueryGraphQLReturn(bizObjName DemoEntity)public IOrmEntity findBySql(Name(name) String name) {return demoMapper.findFirstByName(name);}} package com.nop.biz.demo;import io.nop.api.core.annotations.core.Name; import io.nop.api.core.annotations.orm.SqlLibMapper; import io.nop.orm.IOrmEntity;/*** strong /strong br* p* strong /strong br* /p* br** author :* date 2024年01月31日* 修改人 修改日期 修改描述br* -------------------------------------------br* br* br*/ SqlLibMapper(/test/demo/sql/demo.sql-lib.xml) public interface DemoMapper {IOrmEntity findFirstByName(Name(name) String name);}package com.nop.biz;import io.nop.api.core.annotations.core.Locale; import io.nop.api.core.exceptions.ErrorCode;import static io.nop.api.core.exceptions.ErrorCode.define;/*** strong /strong br* p* strong /strong br* /p* br** author :* date 2024年01月31日* 修改人 修改日期 修改描述br* -------------------------------------------br* br* br*/ Locale(zh-CN) public interface DemoErrors {String ARG_NAME name;ErrorCode ERR_DEMO_NOT_FOUND define(nop.err.demo.not-found, 指定数据不存在: {name}, ARG_NAME); }package com.nop.biz;import lombok.Data;/*** strong /strong br* p* strong /strong br* /p* br** author :* date 2024年01月30日* 修改人 修改日期 修改描述br* -------------------------------------------br* br* br*/ Data public class DemoRequest {private String name;private String email;} package com.nop.biz;import lombok.Data;/*** strong /strong br* p* strong /strong br* /p* br** author :* date 2024年01月30日* 修改人 修改日期 修改描述br* -------------------------------------------br* br* br*/ Data public class DemoResponse {private String name;private String result;} 其中BizModel BizMutation BizQuery RequestBean NameSqlLibMapper 是nop中规定的一些注解BizModel 类似spring中的ControlllerRequestBean 类似于spring中的RequestBodySqlLibMapper类似于Mapper代表存放sql的地址文件后面会有请求案例 第6步 创建资源文件 关于目录结构后面有介绍需要按照nop规定好的结构千万别忘了_module这是规定一个目录为一个模块的文件就是一个空文件 app-demo.beans.xml ?xml version1.0 encodingUTF-8 ?beans x:schema/nop/schema/beans.xdef xmlns:x/nop/schema/xdsl.xdefbean idDemoBizModel classcom.nop.biz.demo.DemoBizModel/bean idDemoEntityBizModel classcom.nop.biz.demo.DemoEntityBizModel/bean idcom.nop.biz.demo.DemoMapper classio.nop.orm.sql_lib.proxy.SqlLibProxyFactoryBeanioc:typebean:id ioc:bean-methodbuildproperty namemapperClass valuebean:type//bean /beansDemoEntity.xmeta meta x:schema/nop/schema/xmeta.xdef xmlns:x/nop/schema/xdsl.xdefpropsprop namesid displayNameSID queryabletrueschema typeString//propprop namename displayName名称 queryabletrue insertabletrue updatabletrueschema typeString//propprop namestatus displayName状态 queryabletrue insertabletrue updatabletrueschema typeInteger//propprop namestatus_label displayName状态文本schema typeString/getterc:script![CDATA[if(entity.status 1)return ACTIVE;return INACTIVE;]]/c:script/getter/prop/props /metaapp.orm.xml orm x:schema/nop/schema/orm/orm.xdef xmlns:x/nop/schema/xdsl.xdefentitiesentity nameapp.demo.DemoEntity tableNamedemo_entityclassNameio.nop.orm.support.DynamicOrmEntity registerShortNametruecolumnscolumn namesid codeSID propId1 stdSqlTypeVARCHAR precision32 tagSetseqmandatorytrue primarytrue/column namename codeNAME propId2 stdSqlTypeVARCHAR precision100 mandatorytrue/column namestatus codeSTATUS propId3 stdSqlTypeINTEGER//columns/entity/entities /ormdemo.sql-lib.xml sql-lib x:schema/nop/schema/orm/sql-lib.xdef xmlns:x/nop/schema/xdsl.xdefsqlseql namefindFirstByName sqlMethodfindFirstsourceselect o from DemoEntity o where o.name like ${% name %}/source/eql/sqls /sql-lib第7步 运行项目,项目启动以后会在项目目录下生成一个_dump 的目录里面可以供开发者调试 Nop平台调试模式启动Nop平台的调试模式只需设置nop.debugtrue。在调试模式下可以通过以下链接获取所有服务定义 /p/DevDoc__graphql/p/DevDoc__beans 例 127.0.0.1:8080/p/DevDoc__graphql 可以看到对外暴露的所有服务定义。 例如 type DemoEntity{ SID sid : String 名称 name : String 状态 status : Int 状态文本 status_label : String } 127.0.0.1:8080/p/DevDoc__beans 可以查看所有对象定义。 例如bean classcom.nop.biz.demo.DemoBizModel idDemoBizModel ioc:aopfalse/ 注意事项 前端的REST链接根据对象名和方法名自动推定无需手工指定固定格式为: /r/{bizObjName}__{bizMethod}。 注意是两个下划线。BizQuery允许通过GET和POST两种HTTP方法调用而BizMutation只允许通过POST方法调用。通过GET方式调用时可以通过URL链接来传递参数例如/r/Demo__hello?messageabc。通过POST方式调用时可以通过URL来传参也可以通过Http的body使用JSON格式传递。可以通过Name来一个个的指定前台参数也可以通过RequestBean将前台传递过来的所有参数包装为指定的JavaBean类型。服务函数总是返回POJO对象并指定按照JSON格式进行编码。 示例API访问 REST 例1带响应状态 访问127.0.0.1:8080/r/Demo__hello?messageabc响应 { “data”: “Hi,abc”, “status”: 0 } 例2不带响应状态 访问127.0.0.1:8080/p/Demo__hello?messageabc响应 Hi,abc 其他类似 127.0.0.1:8080/r/DemoEntity__findByName?nameabc 127.0.0.1:8080/r/Demo2Entity__findByName?nameabc GraphQL 例1(查询)关键字query 访问POST 127.0.0.1:8080/graphql 请求体 query{ Demo__hello(message:“2343”) } 响应 { “data”: { “Demo__hello”: “Hi,abc” } } 例2(更新)关键字mutation 访问POST 127.0.0.1:8080/graphql 请求体 mutation { Demo__testOk( name: “zhagnsan”, email: “123qq.com” ) { name result } } 响应 { “data”: { “Demo__hello”: “Hi,abc” } } 例3(保存)关键字mutation 访问POST 127.0.0.1:8080/graphql请求体 mutation { DemoEntity__saveEntity(data: {name: “zhagnsan”, status: 1}) { sid name status } }响应 { “data”: { “DemoEntity__saveEntity”: { “sid”: “23410bb4cdd74fc7bd2c1795059ff8a1”, “name”: “zhagnsan”, “status”: 1 } } } 例2跟例3有点类似于spring中的加RequestBody跟不加RequestBody的区别 用 RequestBean注解就直接写属性字段Name需要把方法中的对象参数名写在前面 文件命名规范 平台内所有会被自动识别并处理的文件模式已在此文档中列举 Nop平台内部约定了一定的资源路径模式会自动查找满足模式的文件进行加载。 META-INF/servicesio.nop.core.initialize.ICoreInitializer 使用Java内置的ServiceLoader机制注册分级初始化函数CoreInitialization会读取所有CoreInitializer按照优先级顺序执行 bootstrap.yaml 静态全局配置文件其中的内容优先级最高不会被外部配置所覆盖 application.yaml 全局的配置文件 application-{profile}.yaml 全局的配置文件profile是通过nop.profile指定的部署环境名称_vfs//_delta/{deltaDir} 这里是delta层的名称缺省会加载default层这里的文件会覆盖标准路径的同名文件/dict{dictName}.dict.yaml 字典文件不会被自动加载但是通过dictName加载指定字典文件 /i18n/{locale}{moduleName}.i18n.yaml I18nManager初始化的时候会自动加载所有i18n文件 /nop/aop{xxx}.annotations Nop的AOP代码生成器生成包装类时会读取所有的annotations文件并为每个标注了指定注解的类生成AOP包装类/autoconfig{xxx}.beans NopIoC会自动扫描解析所有后缀名为beans的文件加载其中的beans.xml文件/core/reigstry{xxx}.register-model.xml 初始化时会自动扫描所有registry-model.xml文件并注册对应的DSL模型解析器将它们和特定的文件类型关联起来/dao/dialect/selector{xxx}.selector.xml 初始化时会自动扫描所有selector.xml文件加载数据库方言的匹配规则{dialectName}.dialect.xml 数据库方言定义文件按照dialectName来加载/main/auth/main.action-auth.xml 全局的操作权限和菜单定义文件在其中通过x:extends来引用其他权限文件/main.data-auth.xml 全局的数据权限定义文件在其中通过x:extends来引用其他数据权限文件 /{moduleId} Nop模块的moduleId必须是nop/auth这种两级目录结构_module 每个Nop模块下都有一个_module文件来标记它是模块。/beansapp-{xxx}.beans.xml NopIoC启动时会自动扫描每个模块的beans目录下以app-为前缀的beans.xml文件/model{bizObjName}.xbiz 所有的服务对象原则上都是要在beans.xml中注册然后再通过对象名查找到对应的xbiz和xmeta文件{bizObjName}.xmeta NopDynEntity对象采用了简化注册流程直接向BizObjectManager注册没有在beans.xml中定义服务对象 /ormapp.orm.xml NopOrm引擎初始化的时候会加载所有模块的orm目录下的app.orm.xml模型文件/pages/{bizObjName}{pageId}.page.yaml 可以配置页面文件在系统初始化的情况下加载它引用的view模型因此被连带加载{bizObjName}.view.xml View模型不会被自动加载但是一般会放置在这个位置 第1篇就先写这么多后面再慢慢完善
http://www.yingshimen.cn/news/38016/

相关文章:

  • 大连网站开发需要多少钱企业网站建设公司价格
  • 广州电子商务网站建设家居网站建设定位分析论文
  • 北京新鸿儒做的网站网页设计师在什么公司工作
  • 电子商务网站开发技术支持菏泽郓城网站建设公司
  • 烟台网站制作计划商城网站建站系统
  • 做微信小程序的网站网站为什么要维护
  • 天津河西做网站哪家好网站开发 站长统计
  • 常州网站建设方案外包学校网站开发毕业设计
  • 英文设计网站建网站没有实体公司能建站吗
  • 浙江建设职业技术学院迎新网站京东网上商城首页
  • 网站添加锚点网站开发进度计划书
  • 网站服务器防护邵阳专业网站设计
  • 个人简历模板免费网站邯郸市都有哪些网络推广公司
  • 网站动态和静态的区别青岛网页建站工具
  • 青岛做网站大公司有哪些安卓优化大师app下载
  • 做室内效果图网站上海工商企业查询网
  • 南翔企业网站开发建设百度关键词优化策略
  • 网站建设公司小江网站建设具备什么条件
  • 成都网站制作公司有哪些女生学数字媒体技术难吗
  • 机械配件网站建设辽宁城乡建设工程招标网
  • wordpress女性模板seo企业站收录
  • 创建网站为啥要钱产品营销推广策略
  • 青秀区网站建设公司推广方法有哪些
  • html怎么设置网站吗网址大全免费
  • 模板建站适屏怎么将网站做成公司官网
  • 单页简洁手机网站模板江苏建设人才考试网是啥网站
  • 企业手机网站建设需要注意哪些学习网站制作
  • 建站的步骤深圳网站设计公司费用
  • 简约网站设计一个公司网站设计需求
  • 网站半年没更新怎么做SEOwordpress 公司主题