GithubHelp home page GithubHelp logo

victortzeng / zxw.framework.netcore Goto Github PK

View Code? Open in Web Editor NEW
770.0 57.0 248.0 16.67 MB

基于EF Core的Code First模式的DotNetCore快速开发框架,其中包括DBContext、IOC组件autofac和AspectCore.Injector、代码生成器(也支持DB First)、基于AspectCore的memcache和Redis缓存组件,以及基于ICanPay的支付库和一些日常用的方法和扩展,比如批量插入、更新、删除以及触发器支持,当然还有demo。欢迎提交各种建议、意见和pr~

License: MIT License

C# 100.00%
dotnetcore efcore codefirst autofac sqlite sqlserver mysql postgresql mongodb aspectcore

zxw.framework.netcore's Introduction

Zxw.Framework.NetCore

Build Status

基于EF Core的Code First模式的DotNetCore快速开发框架

Nuget [最新版本:6.1.0]

Zxw.Framework.NetCore

  • Install-Package Zxw.Framework.NetCore -Version 6.1.0
  • dotnet add package Zxw.Framework.NetCore --version 6.1.0

开发环境

  • VS2019 / VS Code
  • .net core 3.1.100

支持的数据库

  • SQL Server
  • MySQL
  • Sqlite
  • InMemory
  • PostgreSQL
  • Oracle
  • MongoDB (已移除)

日志组件

  • log4net

DI组件

AOP缓存组件使用

本项目采用的AOP中间件 :AspectCore.Extensions.Cache

示例

.net framework版本地址

项目说明

更新日志

2022/11/20

  • 1.兼容.net7.0,
  • 2.移除对MongoDB的支持
  • 3.HttpRequestHelper标识为已过时,请用HttpClient

2019/12/17

    1. 添加框架同一入口扩展方法 AddCoreX
services.AddCoreX(config=> { })
    1. AddCoreX方法里面默认开启注入实现了ISingletonDependency、IScopedDependency、ITransientDependency三种不同生命周期的类,以及AddHttpContextAccessor和AddDataProtection。如需要自动注入,只需要按需实现ISingletonDependency、IScopedDependency、ITransientDependency这三种生命周期接口即可。
    1. 添加会话上下文 WebContext
    1. 升级 AspectCore 至 2.0.0
    1. 示例 Zxw.Framework.NetCore.Demo 已同步更新。

2019/09/16

  • 1.更换Oracle for efcore驱动,使用Oracle官方驱动

2019/09/15

  • 1.重构AOP缓存,统一用CachedAttribute

2019/08/11

  • 1.重构代码生成器,分CodeFirst和DbFirst

a.启用代码生成器


//启用代码生成器
services.UseCodeGenerator(new CodeGeneratorOption());

b.使用代码生成器


//CodeFirst---根据model生成其他各层的代码
dbContext.CodeFirst().GenerateAll(ifExsitedCovered:true);

//DbFirst---根据现有数据表生成各层代码
dbCOntext.DbFirst().GenerateAll(ifExsitedCovered:true);

  • 2.添加对APIController的代码生成

2019/04/25

  • 1.修改缓存拦截器默认key格式为:{namespace}{class}{method}{参数值hashcode}
  • 2.缓存拦截器添加对Task<>类型的支持

2019/04/18

  • 1.删除触发器功能...
  • 2.实现多数据库上下文。用法:
    //注入数据库上下文
    services.AddDbContextFactory(factory =>
    {
        factory.AddDbContext<PostgreSQLDbContext>("db1", new DbContextOption(){ConnectionString = "User ID=postgres;Password=123456;Host=localhost;Port=5432;Database=ZxwPgDemo;Pooling=true;" });
        factory.AddDbContext<SqlServerDbContext>("db2", new DbContextOption() { ConnectionString = "" });
        factory.AddDbContext<MongoDbContext>("db3", new DbContextOption() { ConnectionString = "" });
    });


    //获取
    public class TestController
    {
        public IDbContextCore DbContext1 { get; set; }
        public IDbContextCore DbContext2 { get; set; }
        public IDbContextCore DbContext3 { get; set; }

        public TestController(DbContextFactory factory)
        {
            DbContext1 = factory.GetDbContext("db1");
            DbContext2 = factory.GetDbContext("db2");
            DbContext3 = factory.GetDbContext("db3");
        }

        public void Run()
        {
            var db = DbContext1.GetDatabase();
            Console.WriteLine();
        }
    }
  • 3.多数据库上下文支持属性注入,用法如下:(具体请参考单元测试)
public class TestRepository: BaseRepository<MongoModel, ObjectId>, IMongoRepository
    {
        [FromDbContextFactory("db1")]
        public IDbContextCore DbContext1 { get; set; }
        [FromDbContextFactory("db2")]
        public IDbContextCore DbContext2 { get; set; }
        [FromDbContextFactory("db3")]
        public IDbContextCore DbContext3 { get; set; }



        public void Run()
        {
            Console.WriteLine("Over!");
        }

        public TestRepository(IDbContextCore dbContext) : base(dbContext)
        {
        }
    }

2018/09/24

2018/08/26

  • 1.添加自定义视图分页查询,数据库分页,目前只支持sqlserver
  • 2.update packages

2018/07/06 合并dev分支到master

  • 1.添加EFCore直接返回DataTable功能
  • 2.DBFirst功能,目前仅支持SQL Server、MySQL、NpgSQL三种数据库。根据已存在的数据表直接生成实体代码,详见CodeGenerator
  • 3.添加单元测试项目,并完成对以上两点新功能的测试
  • 4.引入IOC容器Aspectcore.Injector,详见AspectCoreContainer.cs

开源协议

  • 本开源项目遵守MIT开源协议,请保留原作者出处。

zxw.framework.netcore's People

Contributors

victortzeng avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

zxw.framework.netcore's Issues

EntityFrameworkCore.Triggers的配置位置

目前是在Repository的Impl项目中,构造方法中实现。
此位置会导致重复注册事件,请更换相应位置。
如:

static SysMenuRepository()
{
   Triggers<SysMenu>.Inserted += ....;
}

缓存拦截器使用异步时报错

AspectCore.DynamicProxy.AspectInvocationException: Exception has been thrown by the aspect of an invocation. ---> Object reference not set to an instance of an object.. ---> System.NullReferenceException: Object reference not set to an instance of an object.
   at ActualCombat.Hotel.Core.Attributes.RedisCacheAttribute.Invoke(AspectContext context, AspectDelegate next) in E:\Git\src\Hotel.Core\Attributes\RedisCacheAttribute.cs:line 61
   at AspectCore.DynamicProxy.AspectActivator.InvokeTask[TResult](AspectActivatorContext activatorContext)
   --- End of inner exception stack trace ---
   at AspectCore.DynamicProxy.AspectActivator.InvokeTask[TResult](AspectActivatorContext activatorContext)
   at ActualCombat.Hotel.Api.Controllers.UserController.SelectStudentByClassIdAsync() in 
   E:\Git\src\Hotel.Core.Api\Controllers\UserController.cs:line 37
   at lambda_method(Closure , Object )
   at Microsoft.Extensions.Internal.ObjectMethodExecutorAwaitable.Awaiter.GetResult()
   at Microsoft.AspNetCore.Mvc.Internal.ActionMethodExecutor.AwaitableObjectResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
   at System.Threading.Tasks.ValueTask`1.get_Result()
   at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeActionMethodAsync()
   at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeNextActionFilterAsync()
   at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Rethrow(ActionExecutedContext context)
   at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeInnerFilterAsync()
   at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeNextExceptionFilterAsync()

关于SQLServer分页的问题。

在BaseRepository的GetByPagination中分页,生成的sql语句是查询出来的全部。实际上应该生成的SQL语句是OFFSET FETCH 分页(数据库为sql2012版本),是哪的问题?

读数据库时,偶尔会出现Cannot Open when State is Connecting这种错

异常日志:
————————————Begin————————————
记录时间:2018-08-15 16:49:20,651
线程ID:49
日志等级:ERROR
日志类型:Hlb.Robin.Filters.GlobalExceptionFilter
Error
————————————E n d————————————
System.InvalidOperationException: Cannot Open when State is Connecting.
at MySql.Data.MySqlClient.MySqlConnection.OpenAsync(Nullable1 ioBehavior, CancellationToken cancellationToken) at MySql.Data.MySqlClient.MySqlConnection.Open() in C:\projects\mysqlconnector\src\MySqlConnector\MySql.Data.MySqlClient\MySqlConnection.cs:line 157 at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.OpenDbConnection(Boolean errorsExpected) at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.Open(Boolean errorsExpected) at Microsoft.EntityFrameworkCore.Query.QueryMethodProvider._FastQuery[TEntity](RelationalQueryContext relationalQueryContext, ShaperCommandContext shaperCommandContext, Func3 materializer, Type contextType, IDiagnosticsLogger1 logger)+MoveNext() at System.Collections.Generic.List1.AddEnumerable(IEnumerable1 enumerable) at System.Linq.Enumerable.ToList[TSource](IEnumerable1 source)
at Hlb.Robin.Website.Controllers.ArticleController.Index(String type, Int32 page) in D:\Controllers\ArticleController.cs:line 28
at lambda_method(Closure , Object , Object[] )
at Microsoft.Extensions.Internal.ObjectMethodExecutor.Execute(Object target, Object[] parameters)
at Microsoft.AspNetCore.Mvc.Internal.ActionMethodExecutor.SyncActionResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeActionMethodAsync()
at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeNextActionFilterAsync()
at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Rethrow(ActionExecutedContext context)
at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeInnerFilterAsync()
at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeNextExceptionFilterAsync()
————————————Begin————————————
记录时间:2018-08-15 16:49:21,278
线程ID:51
日志等级:ERROR
日志类型:Hlb.Robin.Filters.GlobalExceptionFilter
Error
————————————E n d————————————
System.InvalidOperationException: Cannot set MySqlCommand.CommandText when there is an open DataReader for this command; it must be closed first.
at MySql.Data.MySqlClient.MySqlCommand.set_CommandText(String value) in C:\projects\mysqlconnector\src\MySqlConnector\MySql.Data.MySqlClient\MySqlCommand.cs:line 94
at Microsoft.EntityFrameworkCore.Storage.Internal.RelationalCommand.CreateCommand(IRelationalConnection connection, IReadOnlyDictionary2 parameterValues) at Microsoft.EntityFrameworkCore.Storage.Internal.RelationalCommand.Execute(IRelationalConnection connection, DbCommandMethod executeMethod, IReadOnlyDictionary2 parameterValues)
at Microsoft.EntityFrameworkCore.Storage.Internal.RelationalCommand.ExecuteReader(IRelationalConnection connection, IReadOnlyDictionary2 parameterValues) at Microsoft.EntityFrameworkCore.Query.QueryMethodProvider._FastQuery[TEntity](RelationalQueryContext relationalQueryContext, ShaperCommandContext shaperCommandContext, Func3 materializer, Type contextType, IDiagnosticsLogger1 logger)+MoveNext() at System.Collections.Generic.List1.AddEnumerable(IEnumerable1 enumerable) at System.Linq.Enumerable.ToList[TSource](IEnumerable1 source)
at Hlb.Robin.Website.Controllers.ArticleController.Index(String type, Int32 page) in D:\Controllers\ArticleController.cs:line 28
at lambda_method(Closure , Object , Object[] )
at Microsoft.Extensions.Internal.ObjectMethodExecutor.Execute(Object target, Object[] parameters)
at Microsoft.AspNetCore.Mvc.Internal.ActionMethodExecutor.SyncActionResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeActionMethodAsync()
at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeNextActionFilterAsync()
at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Rethrow(ActionExecutedContext context)
at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeInnerFilterAsync()
at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeNextExceptionFilterAsync()

AddCoreX这个方法,怎么保证实例化顺序

AddCoreX这个方法怎么保证DbContext->Repository->UnitOfWork->Service->api,因为构造函数中彼此有顺序,所以我用这个方法一直没有成功,望指教.
此外Core3.1 中AspectCoreContainer.BuildServiceProvider方法中一直不成功.也请指教是否是用法有问题.
框架很不错,**也很赞,非常感谢!

多dbcontent情况下,数据库迁移不了

多dbcontent情况下,数据库迁移不了,mysqldbcontent,sqldbcontent,比如要注入services.AddDbContext();才能迁移成功,使用接口注入迁移不成功services.AddDbContext<IDbContextCore, SqlServerDbContext>();

能否增加Redis以及MemoryCache的开关啊?

能否增加Redis以及MemoryCache的开关啊?再配置文件或者其他常量中能够进行配置这样是否更好?
还有就是现在已经取消了 Services 以及 Services了吗?能否添加REST webapi框架啊?

完成对DB First代码生成的支持

目前仅支持Sqlserver、MySQL、NpgSQL等三种数据库,具体用法如下:

  1. 注入DbContextOption
services.Configure<DbContextOption>(options =>
{
    options.ConnectionString =
        "User ID=zengxw;Password=123456;Host=localhost;Port=5432;Database=ZxwPgDemo;Pooling=true;";
});
  1. 注入CodeGenerateOption
services.Configure<CodeGenerateOption>(options =>
{
    options.OutputPath = "F:\\Test\\PostgreSQL";
    options.ModelsNamespace = "Zxw.Framework.Website.Models";
    options.IRepositoriesNamespace = "Zxw.Framework.Website.IRepositories";
    options.RepositoriesNamespace = "Zxw.Framework.Website.Repositories";
    options.ControllersNamespace = "Zxw.Framework.Website.Controllers";
});   
  1. 调用GenerateAllCodesFromDatabase生成所有代码
CodeGenerator.GenerateAllCodesFromDatabase(true);

生成代码文件结构图

我想加个Service层怎么处理呢?

我想加个Service层怎么处理呢?业务逻辑放在这里面处理。还有就是注入的时候 可以使用命名空间不使用dll文件名来注入吗

觉得在service层中调用自定义repository感觉不合理

在业务service:TutorClassTypeService中调用数据层ITutorClassTypeRepository中感觉多此一举。
为何不在service中直接调用IRepository泛型,免去每次都要为业务写一层业务层还要再多一层数据层ITutorClassTypeRepository

Demo 初始化数据库错误

记录时间:2019-06-02 21:12:45,282
线程ID:8
日志等级:ERROR
日志类型:Zxw.Framework.NetCore.Filters.GlobalExceptionFilter
Error
————————————E n d————————————
AspectCore.DynamicProxy.AspectInvocationException: Exception has been thrown by the aspect of an invocation. ---> The connection was not closed. The connection's current state is connecting.. ---> System.InvalidOperationException: The connection was not closed. The connection's current state is connecting.
at System.Data.ProviderBase.DbConnectionClosedConnecting.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource1 retry, DbConnectionOptions userOptions) at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource1 retry)
at System.Data.SqlClient.SqlConnection.Open()
at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.OpenDbConnection(Boolean errorsExpected)
at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.Open(Boolean errorsExpected)
at Microsoft.EntityFrameworkCore.Query.Internal.QueryingEnumerable1.Enumerator.BufferlessMoveNext(DbContext _, Boolean buffer) at Microsoft.EntityFrameworkCore.SqlServer.Storage.Internal.SqlServerExecutionStrategy.Execute[TState,TResult](TState state, Func3 operation, Func3 verifySucceeded) at Microsoft.EntityFrameworkCore.Query.Internal.QueryingEnumerable1.Enumerator.MoveNext()
at System.Linq.Enumerable.WhereEnumerableIterator1.GetCount(Boolean onlyIfCheap) at Microsoft.EntityFrameworkCore.Query.Internal.LinqOperatorProvider.ResultEnumerable1.GetEnumerator()
at Microsoft.EntityFrameworkCore.Query.Internal.LinqOperatorProvider.ExceptionInterceptor1.EnumeratorExceptionInterceptor.MoveNext() at System.Linq.Enumerable.TryGetFirst[TSource](IEnumerable1 source, Boolean& found)
at System.Linq.Enumerable.First[TSource](IEnumerable1 source) at Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler.<>c__DisplayClass15_11.b__0(QueryContext qc)
at System.Linq.Queryable.Count[TSource](IQueryable1 source, Expression1 predicate)
at invoker_Int32 Count(Expression<Func<SysMenu,Boolean>>)(Object , Object[] )
at AspectCore.DynamicProxy.RuntimeAspectContext.Complete()
--- End of inner exception stack trace ---
at AspectCore.DynamicProxy.AspectActivator.Invoke[TResult](AspectActivatorContext activatorContext)
at AspectCore.DynamicGenerated.SqlServerDbContext.Count[T](Expression`1 where)
at Zxw.Framework.Website.Controllers.Filters.RequestFilter.OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next) in E:\Zxw.Framework.NetCore.Demo-master\src\Zxw.Framework.Website.Controllers\Filters\RequestFilter.cs:line 22
at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeNextActionFilterAsync()
at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Rethrow(ActionExecutedContext context)
at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeInnerFilterAsync()
at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeNextExceptionFilterAsync()

Microsoft.EntityFrameworkCore包升级成2.1.0版本后会报异常

将demo的nuget包全部升级,即Microsoft.EntityFrameworkCore包版本为2.1.0,会报Method not found: 'Void Microsoft.EntityFrameworkCore.Storage.Internal.RelationalParameterBuilder..ctor(Microsoft.EntityFrameworkCore.Storage.IRelationalTypeMapper)'.)|InnerException:Method not found: 'Void Microsoft.EntityFrameworkCore.Storage.Internal.RelationalParameterBuilder..ctor(Microsoft.EntityFrameworkCore.Storage.IRelationalTypeMapper)'这个异常,降级为2.0.3才正常。请问楼主有没这问题?

Repositories、Services代码生成路径问题

services.Configure<CodeGenerateOption>(options =>{
	options.ModelsNamespace = "WJ.Models";
	options.IServicesNamespace = "WJ.IServices";
	options.ServicesNamespace = "WJ.Services";
});

已经配置了,命名空间,但没有配置 CodeGenerateOption.OutputPath
看下源码生成路径是根据 var iRepositoryPath = options.Value.OutputPath + Delimiter + "IRepositories";

demo当中也没有没配置OutputPath,然后执行生成Repositories、Services代码,发现代码都生成 到盘根目录去了!该如何解决?
image

NET CORE 2.1 错误 无法运行

`An unhandled exception occurred while processing the request.

InvalidOperationException: The property expression 'm => Convert(m.Id, Object)' is not valid. The expression should represent a property access: 't => t.MyProperty'. For more information on including related data, see http://go.microsoft.com/fwlink/?LinkID=746393.

Microsoft.EntityFrameworkCore.Query.ResultOperators.Internal.IncludeExpressionNode.CreateResultOperator(ClauseGenerationContext clauseGenerationContext)`

请教个问题

请教一个问题,Contrllers单独提出来,他是怎么和Web的进行衔接的,请问你的qq是多少,加你请教点问题,谢谢

关于demo如何启动并实现操作数据库

您好。。作者大大,我下载了您的demo,运行了之后
Microsoft.Hosting.Lifetime: Information: Now listening on: http://[::]:8188
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
不会自动弹出网页哎。。并且域名也没有弹出来,。,是我打开的方式不对么???或者能否出一个demo的详细版本分析资料呀。。。。因为工作需要,我需要netcore链接sqlserver和oracle数据库呢,。在线等,大佬

IBaseModel在意义上的话抽象类会更好吧

IBaseModel在意义上的话抽象类会更好吧,大部分框架也都这样设计,抽象类中放Id也更贴切,还有就是IBaseModel中你没有控制并发情况的出现,所以里面加 [Timestamp]标记的一列字节类型并发处理会更好,还有基本的创建时间,更新时间,状态这都是每条数据都应该有的

///


/// DB 資料版號
///

[Timestamp]
public byte[] RowVersion { get; set; }

这个项目能实现Code First吗

No DbContext was found in assembly 'Zxw.Framework.Website.Models'. Ensure that you're using the correct assembly and that the type is neither abstract nor generic.

使用Add-Migration 命令报错

Reload enity

How do U reload Enity configutation or entity?

when new property is added ? (field of entity)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.